import java.util.HashSet;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    HashSet<Color> colors = new HashSet<>();
    int numNull = 0;
    int N = scanner.nextInt();
    for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    }

    int min = Math.max(colors.size(), 1);
    int max = colors.size() + numNull;
    System.out.printf("%d %d\n", min, max);
  }

  private enum Color {
    GRAY, BROWN, GREEN, LIGHT_BLUE, BLUE, YELLOW, ORANGE, RED;

    static Color fromScore(int score) {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    }
  }
} import java.util.HashSet; HashSet java.util import java.util.Scanner; Scanner java.util public class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    HashSet<Color> colors = new HashSet<>();
    int numNull = 0;
    int N = scanner.nextInt();
    for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    }

    int min = Math.max(colors.size(), 1);
    int max = colors.size() + numNull;
    System.out.printf("%d %d\n", min, max);
  }

  private enum Color {
    GRAY, BROWN, GREEN, LIGHT_BLUE, BLUE, YELLOW, ORANGE, RED;

    static Color fromScore(int score) {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    }
  }
} Main public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    HashSet<Color> colors = new HashSet<>();
    int numNull = 0;
    int N = scanner.nextInt();
    for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    }

    int min = Math.max(colors.size(), 1);
    int max = colors.size() + numNull;
    System.out.printf("%d %d\n", min, max);
  } main {
    Scanner scanner = new Scanner(System.in);

    HashSet<Color> colors = new HashSet<>();
    int numNull = 0;
    int N = scanner.nextInt();
    for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    }

    int min = Math.max(colors.size(), 1);
    int max = colors.size() + numNull;
    System.out.printf("%d %d\n", min, max);
  } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) HashSet<Color> colors = new HashSet<>(); colors new HashSet<>() int numNull = 0; numNull 0 int N = scanner.nextInt(); N scanner.nextInt() scanner.nextInt scanner for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    } {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    } int a = scanner.nextInt(); a scanner.nextInt() scanner.nextInt scanner Color c = Color.fromScore(a); c Color.fromScore(a) Color.fromScore Color a if (c != null) colors.add(c);
      else numNull++; c != null c null colors.add(c) colors.add colors c numNull++ numNull int min = Math.max(colors.size(), 1); min Math.max(colors.size(), 1) Math.max Math colors.size() colors.size colors 1 int max = colors.size() + numNull; max colors.size() + numNull colors.size() colors.size colors numNull System.out.printf("%d %d\n", min, max) System.out.printf System.out System System.out "%d %d\n" min max String[] args args private enum Color {
    GRAY, BROWN, GREEN, LIGHT_BLUE, BLUE, YELLOW, ORANGE, RED;

    static Color fromScore(int score) {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    }
  } Color GRAY GRAY BROWN BROWN GREEN GREEN LIGHT_BLUE LIGHT_BLUE BLUE BLUE YELLOW YELLOW ORANGE ORANGE RED RED static Color fromScore(int score) {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    } fromScore {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    } if (score < 400) return GRAY; score < 400 score 400 return GRAY; GRAY if (score < 800) return BROWN; score < 800 score 800 return BROWN; BROWN if (score < 1200) return GREEN; score < 1200 score 1200 return GREEN; GREEN if (score < 1600) return LIGHT_BLUE; score < 1600 score 1600 return LIGHT_BLUE; LIGHT_BLUE if (score < 2000) return BLUE; score < 2000 score 2000 return BLUE; BLUE if (score < 2400) return YELLOW; score < 2400 score 2400 return YELLOW; YELLOW if (score < 2800) return ORANGE; score < 2800 score 2800 return ORANGE; ORANGE if (score < 3200) return RED; score < 3200 score 3200 return RED; RED return null; null int score score import java.util.HashSet;
import j import java.util.HashSet;
import java.util.Scanner;

public class Main {
  public static void ma public class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    HashSet<Color> colors = new HashSet<>();
    int numNull = 0;
    int N = scanner.nextInt();
    for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    }

    int min = Math.max(colors.size(), 1);
    int max = colors.size() + numNull;
    System.out.printf("%d %d\n", min, max);
  }

  private enum Color {
    GRAY, BROWN, GREEN, LIGHT_BLUE, BLUE, YELLOW, ORANGE, RED;

    static Color fromScore(int score) {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    }
  }
} public class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    HashSet<Color> colors = new HashSet<>();
    int numNull = 0;
    int N = scanner.nextInt();
    for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    }

    int min = Math.max(colors.size(), 1);
    int max = colors.size() + numNull;
    System.out.printf("%d %d\n", min, max);
  }

  private enum Color {
    GRAY, BROWN, GREEN, LIGHT_BLUE, BLUE, YELLOW, ORANGE, RED;

    static Color fromScore(int score) {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    }
  }
} Main
import java.util.HashSet;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    HashSet<Color> colors = new HashSet<>();
    int numNull = 0;
    int N = scanner.nextInt();
    for (int i = 0; i < N; i++) {
      int a = scanner.nextInt();
      Color c = Color.fromScore(a);
      if (c != null) colors.add(c);
      else numNull++;
    }

    int min = Math.max(colors.size(), 1);
    int max = colors.size() + numNull;
    System.out.printf("%d %d\n", min, max);
  }

  private enum Color {
    GRAY, BROWN, GREEN, LIGHT_BLUE, BLUE, YELLOW, ORANGE, RED;

    static Color fromScore(int score) {
      if (score < 400) return GRAY;
      if (score < 800) return BROWN;
      if (score < 1200) return GREEN;
      if (score < 1600) return LIGHT_BLUE;
      if (score < 2000) return BLUE;
      if (score < 2400) return YELLOW;
      if (score < 2800) return ORANGE;
      if (score < 3200) return RED;
      return null;
    }
  }
}
