import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static int getRank(int val) {
		if(val <= 399) return 0;
		if(val <= 799) return 1;
		if(val <= 1199) return 2;
		if(val <= 1599) return 3;
		if(val <= 1999) return 4;
		if(val <= 2399) return 5;
		if(val <= 2799) return 6;
		if(val <= 3199) return 7;
		return 8;
	}

	public static void main(String[] args) {

		int rankNum = 9;
		int[] count = new int[rankNum];
		Arrays.fill(count, 0);

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++;
		sc.close();

		int colorNum = 0;
		for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		}
		int minColorNum = (int)Math.max(colorNum, 1);
		int maxColorNum = colorNum+count[count.length-1];
		System.out.println(minColorNum + " " + maxColorNum);
	}
} import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util public class Main {

	public static int getRank(int val) {
		if(val <= 399) return 0;
		if(val <= 799) return 1;
		if(val <= 1199) return 2;
		if(val <= 1599) return 3;
		if(val <= 1999) return 4;
		if(val <= 2399) return 5;
		if(val <= 2799) return 6;
		if(val <= 3199) return 7;
		return 8;
	}

	public static void main(String[] args) {

		int rankNum = 9;
		int[] count = new int[rankNum];
		Arrays.fill(count, 0);

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++;
		sc.close();

		int colorNum = 0;
		for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		}
		int minColorNum = (int)Math.max(colorNum, 1);
		int maxColorNum = colorNum+count[count.length-1];
		System.out.println(minColorNum + " " + maxColorNum);
	}
} Main public static int getRank(int val) {
		if(val <= 399) return 0;
		if(val <= 799) return 1;
		if(val <= 1199) return 2;
		if(val <= 1599) return 3;
		if(val <= 1999) return 4;
		if(val <= 2399) return 5;
		if(val <= 2799) return 6;
		if(val <= 3199) return 7;
		return 8;
	} getRank {
		if(val <= 399) return 0;
		if(val <= 799) return 1;
		if(val <= 1199) return 2;
		if(val <= 1599) return 3;
		if(val <= 1999) return 4;
		if(val <= 2399) return 5;
		if(val <= 2799) return 6;
		if(val <= 3199) return 7;
		return 8;
	} if(val <= 399) return 0; val <= 399 val 399 return 0; 0 if(val <= 799) return 1; val <= 799 val 799 return 1; 1 if(val <= 1199) return 2; val <= 1199 val 1199 return 2; 2 if(val <= 1599) return 3; val <= 1599 val 1599 return 3; 3 if(val <= 1999) return 4; val <= 1999 val 1999 return 4; 4 if(val <= 2399) return 5; val <= 2399 val 2399 return 5; 5 if(val <= 2799) return 6; val <= 2799 val 2799 return 6; 6 if(val <= 3199) return 7; val <= 3199 val 3199 return 7; 7 return 8; 8 int val val public static void main(String[] args) {

		int rankNum = 9;
		int[] count = new int[rankNum];
		Arrays.fill(count, 0);

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++;
		sc.close();

		int colorNum = 0;
		for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		}
		int minColorNum = (int)Math.max(colorNum, 1);
		int maxColorNum = colorNum+count[count.length-1];
		System.out.println(minColorNum + " " + maxColorNum);
	} main {

		int rankNum = 9;
		int[] count = new int[rankNum];
		Arrays.fill(count, 0);

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++;
		sc.close();

		int colorNum = 0;
		for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		}
		int minColorNum = (int)Math.max(colorNum, 1);
		int maxColorNum = colorNum+count[count.length-1];
		System.out.println(minColorNum + " " + maxColorNum);
	} int rankNum = 9; rankNum 9 int[] count = new int[rankNum]; count new int[rankNum] rankNum Arrays.fill(count, 0) Arrays.fill Arrays count 0 Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++; int i=0; int i=0; i 0 i<n i n i++ i++ i count[getRank(sc.nextInt())]++; count[getRank(sc.nextInt())]++ count[getRank(sc.nextInt())] count getRank(sc.nextInt()) getRank sc.nextInt() sc.nextInt sc sc.close() sc.close sc int colorNum = 0; colorNum 0 for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		} int i=0; int i=0; i 0 i<count.length - 1 i count.length - 1 count.length count count.length 1 i++ i++ i {
			if(count[i] != 0)
				colorNum++;
		} {
			if(count[i] != 0)
				colorNum++;
		} if(count[i] != 0)
				colorNum++; count[i] != 0 count[i] count i 0 colorNum++ colorNum int minColorNum = (int)Math.max(colorNum, 1); minColorNum (int)Math.max(colorNum, 1) Math.max Math colorNum 1 int maxColorNum = colorNum+count[count.length-1]; maxColorNum colorNum+count[count.length-1] colorNum count[count.length-1] count count.length-1 count.length count count.length 1 System.out.println(minColorNum + " " + maxColorNum) System.out.println System.out System System.out minColorNum + " " + maxColorNum minColorNum + " " + maxColorNum minColorNum " " maxColorNum String[] args args public class Main {

	public static int getRank(int val) {
		if(val <= 399) return 0;
		if(val <= 799) return 1;
		if(val <= 1199) return 2;
		if(val <= 1599) return 3;
		if(val <= 1999) return 4;
		if(val <= 2399) return 5;
		if(val <= 2799) return 6;
		if(val <= 3199) return 7;
		return 8;
	}

	public static void main(String[] args) {

		int rankNum = 9;
		int[] count = new int[rankNum];
		Arrays.fill(count, 0);

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++;
		sc.close();

		int colorNum = 0;
		for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		}
		int minColorNum = (int)Math.max(colorNum, 1);
		int maxColorNum = colorNum+count[count.length-1];
		System.out.println(minColorNum + " " + maxColorNum);
	}
} public class Main {

	public static int getRank(int val) {
		if(val <= 399) return 0;
		if(val <= 799) return 1;
		if(val <= 1199) return 2;
		if(val <= 1599) return 3;
		if(val <= 1999) return 4;
		if(val <= 2399) return 5;
		if(val <= 2799) return 6;
		if(val <= 3199) return 7;
		return 8;
	}

	public static void main(String[] args) {

		int rankNum = 9;
		int[] count = new int[rankNum];
		Arrays.fill(count, 0);

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++;
		sc.close();

		int colorNum = 0;
		for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		}
		int minColorNum = (int)Math.max(colorNum, 1);
		int maxColorNum = colorNum+count[count.length-1];
		System.out.println(minColorNum + " " + maxColorNum);
	}
} Main
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static int getRank(int val) {
		if(val <= 399) return 0;
		if(val <= 799) return 1;
		if(val <= 1199) return 2;
		if(val <= 1599) return 3;
		if(val <= 1999) return 4;
		if(val <= 2399) return 5;
		if(val <= 2799) return 6;
		if(val <= 3199) return 7;
		return 8;
	}

	public static void main(String[] args) {

		int rankNum = 9;
		int[] count = new int[rankNum];
		Arrays.fill(count, 0);

		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=0; i<n; i++)
			count[getRank(sc.nextInt())]++;
		sc.close();

		int colorNum = 0;
		for(int i=0; i<count.length - 1; i++) {
			if(count[i] != 0)
				colorNum++;
		}
		int minColorNum = (int)Math.max(colorNum, 1);
		int maxColorNum = colorNum+count[count.length-1];
		System.out.println(minColorNum + " " + maxColorNum);
	}
}
