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

// 提出時にclass Main に書き換え
public class Main {
	public static void main(String[] args)  {
		// かがみもちの直径を格納するセットd
		Set<Integer> d = new HashSet<Integer>();
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // int Nを受け取る
		for(int i=0; i < N; i++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		}
		sc.close(); // 標準入力を終了

		// d.size()を出力
		System.out.println(d.size());
	}

} import java.util.HashSet; HashSet 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)  {
		// かがみもちの直径を格納するセットd
		Set<Integer> d = new HashSet<Integer>();
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // int Nを受け取る
		for(int i=0; i < N; i++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		}
		sc.close(); // 標準入力を終了

		// d.size()を出力
		System.out.println(d.size());
	}

} Main public static void main(String[] args)  {
		// かがみもちの直径を格納するセットd
		Set<Integer> d = new HashSet<Integer>();
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // int Nを受け取る
		for(int i=0; i < N; i++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		}
		sc.close(); // 標準入力を終了

		// d.size()を出力
		System.out.println(d.size());
	} main {
		// かがみもちの直径を格納するセットd
		Set<Integer> d = new HashSet<Integer>();
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // int Nを受け取る
		for(int i=0; i < N; i++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		}
		sc.close(); // 標準入力を終了

		// d.size()を出力
		System.out.println(d.size());
	} Set<Integer> d = new HashSet<Integer>(); d new HashSet<Integer>() 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++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		} int i=0; int i=0; i 0 i < N i N i++ i++ i {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		} {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		} int di = sc.nextInt(); di sc.nextInt() sc.nextInt sc d.add(di) d.add d di sc.close() sc.close sc System.out.println(d.size()) System.out.println System.out System System.out d.size() d.size d String[] args args public class Main {
	public static void main(String[] args)  {
		// かがみもちの直径を格納するセットd
		Set<Integer> d = new HashSet<Integer>();
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // int Nを受け取る
		for(int i=0; i < N; i++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		}
		sc.close(); // 標準入力を終了

		// d.size()を出力
		System.out.println(d.size());
	}

} public class Main {
	public static void main(String[] args)  {
		// かがみもちの直径を格納するセットd
		Set<Integer> d = new HashSet<Integer>();
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // int Nを受け取る
		for(int i=0; i < N; i++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		}
		sc.close(); // 標準入力を終了

		// d.size()を出力
		System.out.println(d.size());
	}

} Main
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

// 提出時にclass Main に書き換え
public class Main {
	public static void main(String[] args)  {
		// かがみもちの直径を格納するセットd
		Set<Integer> d = new HashSet<Integer>();
		// 標準入力を受け取る
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // int Nを受け取る
		for(int i=0; i < N; i++) {
			int di = sc.nextInt(); // int diを受け取る
			d.add(di); // diをセットdに格納（重複した値は無視）
		}
		sc.close(); // 標準入力を終了

		// d.size()を出力
		System.out.println(d.size());
	}

}