import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		List<String> list = new ArrayList<String>();
		int anyCount = 0;
		
		for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		}
		
		// listの重複を削除する
		Set<String> set = new HashSet<String>(list);
		List<String> list2 = new ArrayList<String>(set);
		
		// anyしかない場合は、最小値は1、最大値はanyの数
		// any以外の色が1つ以上ある場合は、
		// 最小値は、list2の要素数（anyがすべて、list2に含まれる色だった場合）
		// 最大値は、list2の要素数 + anyの数（anyがすべて異なる色だった場合）
		int min, max;
		if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		}
		
		System.out.println(min + " " + max);
	}
	
	public static String getColor(int rate) {
		if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		}
	}	
} import java.util.ArrayList; ArrayList java.util import java.util.HashSet; HashSet java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util import java.util.Set; Set java.util public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		List<String> list = new ArrayList<String>();
		int anyCount = 0;
		
		for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		}
		
		// listの重複を削除する
		Set<String> set = new HashSet<String>(list);
		List<String> list2 = new ArrayList<String>(set);
		
		// anyしかない場合は、最小値は1、最大値はanyの数
		// any以外の色が1つ以上ある場合は、
		// 最小値は、list2の要素数（anyがすべて、list2に含まれる色だった場合）
		// 最大値は、list2の要素数 + anyの数（anyがすべて異なる色だった場合）
		int min, max;
		if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		}
		
		System.out.println(min + " " + max);
	}
	
	public static String getColor(int rate) {
		if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		}
	}	
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		List<String> list = new ArrayList<String>();
		int anyCount = 0;
		
		for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		}
		
		// listの重複を削除する
		Set<String> set = new HashSet<String>(list);
		List<String> list2 = new ArrayList<String>(set);
		
		// anyしかない場合は、最小値は1、最大値はanyの数
		// any以外の色が1つ以上ある場合は、
		// 最小値は、list2の要素数（anyがすべて、list2に含まれる色だった場合）
		// 最大値は、list2の要素数 + anyの数（anyがすべて異なる色だった場合）
		int min, max;
		if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		}
		
		System.out.println(min + " " + max);
	} main {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		List<String> list = new ArrayList<String>();
		int anyCount = 0;
		
		for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		}
		
		// listの重複を削除する
		Set<String> set = new HashSet<String>(list);
		List<String> list2 = new ArrayList<String>(set);
		
		// anyしかない場合は、最小値は1、最大値はanyの数
		// any以外の色が1つ以上ある場合は、
		// 最小値は、list2の要素数（anyがすべて、list2に含まれる色だった場合）
		// 最大値は、list2の要素数 + anyの数（anyがすべて異なる色だった場合）
		int min, max;
		if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		}
		
		System.out.println(min + " " + max);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc List<String> list = new ArrayList<String>(); list new ArrayList<String>() int anyCount = 0; anyCount 0 for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		} {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		} int rate = sc.nextInt(); rate sc.nextInt() sc.nextInt sc String color = getColor(rate); color getColor(rate) getColor rate if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			} color == "any" color "any" {
				anyCount++;
			} anyCount++ anyCount {
				list.add(color);
			} list.add(color) list.add list color Set<String> set = new HashSet<String>(list); set new HashSet<String>(list) List<String> list2 = new ArrayList<String>(set); list2 new ArrayList<String>(set) int min min max; max if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		} list.size() == 0 list.size() list.size list 0 {
			min = 1;
			max = anyCount;
		} min = 1 min 1 max = anyCount max anyCount {
			min = list2.size();
			max = min + anyCount;
		} min = list2.size() min list2.size() list2.size list2 max = min + anyCount max min + anyCount min anyCount System.out.println(min + " " + max) System.out.println System.out System System.out min + " " + max min + " " + max min " " max String[] args args public static String getColor(int rate) {
		if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		}
	} getColor {
		if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		}
	} if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate <= 399 rate 399 {
			return "gray";
		} return "gray"; "gray" if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate >= 400 && rate <= 799 rate >= 400 rate 400 rate <= 799 rate 799 {
			return "brown";
		} return "brown"; "brown" if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate >= 800 && rate <= 1199 rate >= 800 rate 800 rate <= 1199 rate 1199 {
			return "green";
		} return "green"; "green" if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate >= 1200 && rate <= 1599 rate >= 1200 rate 1200 rate <= 1599 rate 1599 {
			return "sky";
		} return "sky"; "sky" if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate >= 1600 && rate <= 1999 rate >= 1600 rate 1600 rate <= 1999 rate 1999 {
			return "blue";
		} return "blue"; "blue" if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate >= 2000 && rate <= 2399 rate >= 2000 rate 2000 rate <= 2399 rate 2399 {
			return "yellow";
		} return "yellow"; "yellow" if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate >= 2400 && rate <= 2799 rate >= 2400 rate 2400 rate <= 2799 rate 2799 {
			return "orange";
		} return "orange"; "orange" if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		} rate >= 2800 && rate <= 3199 rate >= 2800 rate 2800 rate <= 3199 rate 3199 {
			return "red";
		} return "red"; "red" {
			return "any";
		} return "any"; "any" int rate rate public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		List<String> list = new ArrayList<String>();
		int anyCount = 0;
		
		for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		}
		
		// listの重複を削除する
		Set<String> set = new HashSet<String>(list);
		List<String> list2 = new ArrayList<String>(set);
		
		// anyしかない場合は、最小値は1、最大値はanyの数
		// any以外の色が1つ以上ある場合は、
		// 最小値は、list2の要素数（anyがすべて、list2に含まれる色だった場合）
		// 最大値は、list2の要素数 + anyの数（anyがすべて異なる色だった場合）
		int min, max;
		if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		}
		
		System.out.println(min + " " + max);
	}
	
	public static String getColor(int rate) {
		if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		}
	}	
} public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		List<String> list = new ArrayList<String>();
		int anyCount = 0;
		
		for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		}
		
		// listの重複を削除する
		Set<String> set = new HashSet<String>(list);
		List<String> list2 = new ArrayList<String>(set);
		
		// anyしかない場合は、最小値は1、最大値はanyの数
		// any以外の色が1つ以上ある場合は、
		// 最小値は、list2の要素数（anyがすべて、list2に含まれる色だった場合）
		// 最大値は、list2の要素数 + anyの数（anyがすべて異なる色だった場合）
		int min, max;
		if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		}
		
		System.out.println(min + " " + max);
	}
	
	public static String getColor(int rate) {
		if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		}
	}	
} Main
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		
		List<String> list = new ArrayList<String>();
		int anyCount = 0;
		
		for (int i = 0; i < N; i++) {
			int rate = sc.nextInt();
			String color = getColor(rate);
			if (color == "any") {
				anyCount++;
			} else {
				list.add(color);
			}
		}
		
		// listの重複を削除する
		Set<String> set = new HashSet<String>(list);
		List<String> list2 = new ArrayList<String>(set);
		
		// anyしかない場合は、最小値は1、最大値はanyの数
		// any以外の色が1つ以上ある場合は、
		// 最小値は、list2の要素数（anyがすべて、list2に含まれる色だった場合）
		// 最大値は、list2の要素数 + anyの数（anyがすべて異なる色だった場合）
		int min, max;
		if (list.size() == 0) {
			min = 1;
			max = anyCount;
		} else {
			min = list2.size();
			max = min + anyCount;
		}
		
		System.out.println(min + " " + max);
	}
	
	public static String getColor(int rate) {
		if (rate <= 399) {
			return "gray";
		} else if (rate >= 400 && rate <= 799) {
			return "brown";
		} else if (rate >= 800 && rate <= 1199) {
			return "green";
		} else if (rate >= 1200 && rate <= 1599) {
			return "sky";
		} else if (rate >= 1600 && rate <= 1999) {
			return "blue";
		} else if (rate >= 2000 && rate <= 2399) {
			return "yellow";
		} else if (rate >= 2400 && rate <= 2799) {
			return "orange";
		} else if (rate >= 2800 && rate <= 3199) {
			return "red";
		} else {
			return "any";
		}
	}	
}
