import java.util.Scanner;

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

		boolean[] flags = new boolean[8];
		int free = 0;
		for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		}

		int c = 0;
		for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		}

		int min = 0;
		if(n == free){
			min = 1;
		}else{
			min = c;
		}

		int max = c + free;

		System.out.println(min + " " + max);
	}

	private static int colorCode(int n){
		int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200};
		int i;
		for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		}
		return i-1;
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		int n = scn.nextInt();

		boolean[] flags = new boolean[8];
		int free = 0;
		for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		}

		int c = 0;
		for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		}

		int min = 0;
		if(n == free){
			min = 1;
		}else{
			min = c;
		}

		int max = c + free;

		System.out.println(min + " " + max);
	}

	private static int colorCode(int n){
		int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200};
		int i;
		for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		}
		return i-1;
	}
} Main public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		int n = scn.nextInt();

		boolean[] flags = new boolean[8];
		int free = 0;
		for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		}

		int c = 0;
		for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		}

		int min = 0;
		if(n == free){
			min = 1;
		}else{
			min = c;
		}

		int max = c + free;

		System.out.println(min + " " + max);
	} main {
		Scanner scn = new Scanner(System.in);
		int n = scn.nextInt();

		boolean[] flags = new boolean[8];
		int free = 0;
		for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		}

		int c = 0;
		for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		}

		int min = 0;
		if(n == free){
			min = 1;
		}else{
			min = c;
		}

		int max = c + free;

		System.out.println(min + " " + max);
	} Scanner scn = new Scanner(System.in); scn new Scanner(System.in) int n = scn.nextInt(); n scn.nextInt() scn.nextInt scn boolean[] flags = new boolean[8]; flags new boolean[8] 8 int free = 0; free 0 for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		} {
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		} int a = scn.nextInt(); a scn.nextInt() scn.nextInt scn int code = colorCode(a); code colorCode(a) colorCode a if(code == 8){
				free++;
			}else{
				flags[code] = true;
			} code == 8 code 8 {
				free++;
			} free++ free {
				flags[code] = true;
			} flags[code] = true flags[code] flags code true int c = 0; c 0 for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		} int i=0; int i=0; i 0 i<flags.length i flags.length flags flags.length i++ i++ i {
			if(flags[i]){
				c++;
			}
		} {
			if(flags[i]){
				c++;
			}
		} if(flags[i]){
				c++;
			} flags[i] flags i {
				c++;
			} c++ c int min = 0; min 0 if(n == free){
			min = 1;
		}else{
			min = c;
		} n == free n free {
			min = 1;
		} min = 1 min 1 {
			min = c;
		} min = c min c int max = c + free; max c + free c free System.out.println(min + " " + max) System.out.println System.out System System.out min + " " + max min + " " + max min " " max String[] args args private static int colorCode(int n){
		int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200};
		int i;
		for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		}
		return i-1;
	} colorCode {
		int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200};
		int i;
		for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		}
		return i-1;
	} int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200}; rate {1,400,800,1200,1600,2000,2400,2800,3200} 1 400 800 1200 1600 2000 2400 2800 3200 int i; i for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		} i=0; i=0 i 0 i<rate.length i rate.length rate rate.length i++ i++ i {
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		} {
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		} if(rate[i] <= n){
				continue;
			}else{
				break;
			} rate[i] <= n rate[i] rate i n {
				continue;
			} continue; {
				break;
			} break; return i-1; i-1 i 1 int n n public class Main {
	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		int n = scn.nextInt();

		boolean[] flags = new boolean[8];
		int free = 0;
		for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		}

		int c = 0;
		for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		}

		int min = 0;
		if(n == free){
			min = 1;
		}else{
			min = c;
		}

		int max = c + free;

		System.out.println(min + " " + max);
	}

	private static int colorCode(int n){
		int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200};
		int i;
		for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		}
		return i-1;
	}
} public class Main {
	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		int n = scn.nextInt();

		boolean[] flags = new boolean[8];
		int free = 0;
		for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		}

		int c = 0;
		for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		}

		int min = 0;
		if(n == free){
			min = 1;
		}else{
			min = c;
		}

		int max = c + free;

		System.out.println(min + " " + max);
	}

	private static int colorCode(int n){
		int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200};
		int i;
		for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		}
		return i-1;
	}
} Main
import java.util.Scanner;

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

		boolean[] flags = new boolean[8];
		int free = 0;
		for(int i=0;i<n;i++){
			int a = scn.nextInt();
			int code = colorCode(a);
			if(code == 8){
				free++;
			}else{
				flags[code] = true;
			}
		}

		int c = 0;
		for(int i=0;i<flags.length;i++){
			if(flags[i]){
				c++;
			}
		}

		int min = 0;
		if(n == free){
			min = 1;
		}else{
			min = c;
		}

		int max = c + free;

		System.out.println(min + " " + max);
	}

	private static int colorCode(int n){
		int[] rate = {1,400,800,1200,1600,2000,2400,2800,3200};
		int i;
		for(i=0;i<rate.length;i++){
			if(rate[i] <= n){
				continue;
			}else{
				break;
			}
		}
		return i-1;
	}
}
