import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		String[] ss0 = br.readLine().trim().split(" ", 0);
		Integer[] ii0 = new Integer[N];
		for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		}
		
		int[] color = new int[9];
		for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		}
		
		int min=0;
		int max=0;
		for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		}
		max = min + color[8];
		if (min < 1) { min =1; }

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

	return;
	}



} import java.io.BufferedReader; BufferedReader java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.List; List java.util import java.util.ArrayList; ArrayList java.util import java.util.Arrays; Arrays java.util public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		String[] ss0 = br.readLine().trim().split(" ", 0);
		Integer[] ii0 = new Integer[N];
		for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		}
		
		int[] color = new int[9];
		for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		}
		
		int min=0;
		int max=0;
		for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		}
		max = min + color[8];
		if (min < 1) { min =1; }

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

	return;
	}



} Main public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		String[] ss0 = br.readLine().trim().split(" ", 0);
		Integer[] ii0 = new Integer[N];
		for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		}
		
		int[] color = new int[9];
		for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		}
		
		int min=0;
		int max=0;
		for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		}
		max = min + color[8];
		if (min < 1) { min =1; }

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

	return;
	} main {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		String[] ss0 = br.readLine().trim().split(" ", 0);
		Integer[] ii0 = new Integer[N];
		for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		}
		
		int[] color = new int[9];
		for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		}
		
		int min=0;
		int max=0;
		for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		}
		max = min + color[8];
		if (min < 1) { min =1; }

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

	return;
	} 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 String[] ss0 = br.readLine().trim().split(" ", 0); ss0 br.readLine().trim().split(" ", 0) br.readLine().trim().split br.readLine().trim() br.readLine().trim br.readLine() br.readLine br " " 0 Integer[] ii0 = new Integer[N]; ii0 new Integer[N] N for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			ii0[i] = Integer.parseInt(ss0[i]);
		} {
			ii0[i] = Integer.parseInt(ss0[i]);
		} ii0[i] = Integer.parseInt(ss0[i]) ii0[i] ii0 i Integer.parseInt(ss0[i]) Integer.parseInt Integer ss0[i] ss0 i int[] color = new int[9]; color new int[9] 9 for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		} int i ii0 {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		} {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		} if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (1<=i)&&(i<=399) (1<=i) 1 i (i<=399) i 399 {
				color[0] += 1;
			} color[0] += 1 color[0] color 0 1 if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (400<=i)&&(i<=799) (400<=i) 400 i (i<=799) i 799 {
				color[1] += 1;
			} color[1] += 1 color[1] color 1 1 if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (800<=i)&&(i<=1199) (800<=i) 800 i (i<=1199) i 1199 {
				color[2] += 1;
			} color[2] += 1 color[2] color 2 1 if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (1200<=i)&&(i<=1599) (1200<=i) 1200 i (i<=1599) i 1599 {
				color[3] += 1;
			} color[3] += 1 color[3] color 3 1 if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (1600<=i)&&(i<=1999) (1600<=i) 1600 i (i<=1999) i 1999 {
				color[4] += 1;
			} color[4] += 1 color[4] color 4 1 if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (2000<=i)&&(i<=2399) (2000<=i) 2000 i (i<=2399) i 2399 {
				color[5] += 1;
			} color[5] += 1 color[5] color 5 1 if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (2400<=i)&&(i<=2799) (2400<=i) 2400 i (i<=2799) i 2799 {
				color[6] += 1;
			} color[6] += 1 color[6] color 6 1 if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			} (2800<=i)&&(i<=3199) (2800<=i) 2800 i (i<=3199) i 3199 {
				color[7] += 1;
			} color[7] += 1 color[7] color 7 1 {
				color[8] += 1;
			} color[8] += 1 color[8] color 8 1 int min=0; min 0 int max=0; max 0 for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		} int i=0; int i=0; i 0 i < 8 i 8 i++ i++ i {
			if(color[i]>0){ min += 1; }
		} {
			if(color[i]>0){ min += 1; }
		} if(color[i]>0){ min += 1; } color[i]>0 color[i] color i 0 { min += 1; } min += 1 min 1 max = min + color[8] max min + color[8] min color[8] color 8 if (min < 1) { min =1; } min < 1 min 1 { min =1; } min =1 min 1 System.out.println(min + " " + max) System.out.println System.out System System.out min + " " + max min + " " + max min " " max return; String[] args args public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		String[] ss0 = br.readLine().trim().split(" ", 0);
		Integer[] ii0 = new Integer[N];
		for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		}
		
		int[] color = new int[9];
		for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		}
		
		int min=0;
		int max=0;
		for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		}
		max = min + color[8];
		if (min < 1) { min =1; }

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

	return;
	}



} public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		String[] ss0 = br.readLine().trim().split(" ", 0);
		Integer[] ii0 = new Integer[N];
		for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		}
		
		int[] color = new int[9];
		for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		}
		
		int min=0;
		int max=0;
		for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		}
		max = min + color[8];
		if (min < 1) { min =1; }

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

	return;
	}



} Main
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		String[] ss0 = br.readLine().trim().split(" ", 0);
		Integer[] ii0 = new Integer[N];
		for(int i = 0; i < N; i++){
			ii0[i] = Integer.parseInt(ss0[i]);
		}
		
		int[] color = new int[9];
		for(int i: ii0) {
			if((1<=i)&&(i<=399)){
				color[0] += 1;
			}else if((400<=i)&&(i<=799)){
				color[1] += 1;
			}else if((800<=i)&&(i<=1199)){
				color[2] += 1;
			}else if((1200<=i)&&(i<=1599)){
				color[3] += 1;
			}else if((1600<=i)&&(i<=1999)){
				color[4] += 1;
			}else if((2000<=i)&&(i<=2399)){
				color[5] += 1;
			}else if((2400<=i)&&(i<=2799)){
				color[6] += 1;
			}else if((2800<=i)&&(i<=3199)){
				color[7] += 1;
			}else{
				color[8] += 1;
			}
		}
		
		int min=0;
		int max=0;
		for(int i=0; i < 8; i++) {
			if(color[i]>0){ min += 1; }
		}
		max = min + color[8];
		if (min < 1) { min =1; }

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

	return;
	}



}
