import java.io.*;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    boolean[] colorUnder3200 = new boolean[9];
    int rate = 0;
    int numOver3200 = 0;
    boolean allOver3200 = true;
    String[] data = br.readLine().split(" ");
    for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    }
    int base = 0;
    for(boolean b: colorUnder3200){
      if(b) base++;
    }
    int max = base + numOver3200;
    int min = base==0 ? 1 : base;
    System.out.println(min + " " + max);
  }
} import java.io.*; io.* java public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    boolean[] colorUnder3200 = new boolean[9];
    int rate = 0;
    int numOver3200 = 0;
    boolean allOver3200 = true;
    String[] data = br.readLine().split(" ");
    for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    }
    int base = 0;
    for(boolean b: colorUnder3200){
      if(b) base++;
    }
    int max = base + numOver3200;
    int min = base==0 ? 1 : base;
    System.out.println(min + " " + max);
  }
} Main public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    boolean[] colorUnder3200 = new boolean[9];
    int rate = 0;
    int numOver3200 = 0;
    boolean allOver3200 = true;
    String[] data = br.readLine().split(" ");
    for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    }
    int base = 0;
    for(boolean b: colorUnder3200){
      if(b) base++;
    }
    int max = base + numOver3200;
    int min = base==0 ? 1 : base;
    System.out.println(min + " " + max);
  } main {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    boolean[] colorUnder3200 = new boolean[9];
    int rate = 0;
    int numOver3200 = 0;
    boolean allOver3200 = true;
    String[] data = br.readLine().split(" ");
    for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    }
    int base = 0;
    for(boolean b: colorUnder3200){
      if(b) base++;
    }
    int max = base + numOver3200;
    int min = base==0 ? 1 : base;
    System.out.println(min + " " + max);
  } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) int n = Integer.parseInt(br.readLine()); n Integer.parseInt(br.readLine()) Integer.parseInt Integer br.readLine() br.readLine br boolean[] colorUnder3200 = new boolean[9]; colorUnder3200 new boolean[9] 9 int rate = 0; rate 0 int numOver3200 = 0; numOver3200 0 boolean allOver3200 = true; allOver3200 true String[] data = br.readLine().split(" "); data br.readLine().split(" ") br.readLine().split br.readLine() br.readLine br " " for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    } String score data {
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    } {
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    } rate = Integer.parseInt(score)/400 rate Integer.parseInt(score)/400 Integer.parseInt(score) Integer.parseInt Integer score 400 if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      } rate<8 rate 8 {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } colorUnder3200[rate] = true colorUnder3200[rate] colorUnder3200 rate true allOver3200 = false allOver3200 false {
        numOver3200++;
      } numOver3200++ numOver3200 int base = 0; base 0 for(boolean b: colorUnder3200){
      if(b) base++;
    } boolean b colorUnder3200 {
      if(b) base++;
    } {
      if(b) base++;
    } if(b) base++; b base++ base int max = base + numOver3200; max base + numOver3200 base numOver3200 int min = base==0 ? 1 : base; min base==0 ? 1 : base base==0 base 0 1 base System.out.println(min + " " + max) System.out.println System.out System System.out min + " " + max min + " " + max min " " max String[] args args public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    boolean[] colorUnder3200 = new boolean[9];
    int rate = 0;
    int numOver3200 = 0;
    boolean allOver3200 = true;
    String[] data = br.readLine().split(" ");
    for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    }
    int base = 0;
    for(boolean b: colorUnder3200){
      if(b) base++;
    }
    int max = base + numOver3200;
    int min = base==0 ? 1 : base;
    System.out.println(min + " " + max);
  }
} public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    boolean[] colorUnder3200 = new boolean[9];
    int rate = 0;
    int numOver3200 = 0;
    boolean allOver3200 = true;
    String[] data = br.readLine().split(" ");
    for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    }
    int base = 0;
    for(boolean b: colorUnder3200){
      if(b) base++;
    }
    int max = base + numOver3200;
    int min = base==0 ? 1 : base;
    System.out.println(min + " " + max);
  }
} Main
import java.io.*;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int n = Integer.parseInt(br.readLine());
    boolean[] colorUnder3200 = new boolean[9];
    int rate = 0;
    int numOver3200 = 0;
    boolean allOver3200 = true;
    String[] data = br.readLine().split(" ");
    for(String score: data){
      rate = Integer.parseInt(score)/400;
      if(rate<8) {
        colorUnder3200[rate] = true;
        allOver3200 = false;
      } else {
        numOver3200++;
      }
    }
    int base = 0;
    for(boolean b: colorUnder3200){
      if(b) base++;
    }
    int max = base + numOver3200;
    int min = base==0 ? 1 : base;
    System.out.println(min + " " + max);
  }
}
