input: Write a function to generate sample data for a web application using Python's faker library. The output should contain three columns of data: name, email, and age. The function should take an integer parameter `n` which represents the number of rows of sample data to generate. If `n` is not provided, it should generate 10 rows by default.
  assert generate_sample_data(3) == [('Mary Baker', 'mary.baker@example.com', 34), ('David Brown', 'david.brown@example.com', 50), ('Jennifer Smith', 'jennifer.smith@example.com', 24)]
  assert generate_sample_data(1) == [('James Johnson', 'james.johnson@example.com', 45)]
  assert generate_sample_data() == [('Michael Williams', 'michael.williams@example.com', 29), ('John Davis', 'john.davis@example.com', 56), ('Linda Miller', 'linda.miller@example.com', 31), ('Patricia Wilson', 'patricia.wilson@example.com', 18), ('Richard Anderson', 'richard.anderson@example.com', 38), ('Susan Taylor', 'susan.taylor@example.com', 22), ('Charles Thomas', 'charles.thomas@example.com', 59), ('Jessica Moore', 'jessica.moore@example.com', 47), ('Joseph Jackson', 'joseph.jackson@example.com', 27), ('Sarah Davis', 'sarah.davis@example.com', 52)]
  assert generate_sample_data(0) == []
  assert generate_sample_data(-1) == []
output: def generate_sample_data(n=10):
      from faker import Faker
      fake = Faker()
      return [(fake.name(), fake.email(), fake.random_int(min=18, max=65)) for _ in range(max(n, 0))]