import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { void SieveOfAtkin(int limit,BitSet sieve){ for(int x = 1;x*x<=limit;x++){ for(int y=1;y*y<=limit;y++){ int n = (4*x*x)+(y*y); if (n <= limit && (n % 12 == 1 || n % 12 == 5)) sieve.set(n,sieve.get(n)^true); n = (3*x*x)+(y*y); if (n <= limit && n % 12 == 7) sieve.set(n,sieve.get(n)^true); n = (3*x*x)-(y*y); if (x > y && n <= limit && n % 12 == 11) sieve.set(n,sieve.get(n)^true); } } for (int r = 5; r*r <= limit; r++){ if (sieve.get(r)){ for (int i = r*r; i <= limit; i += r*r) sieve.clear(i); } } if (limit > 2) sieve.set(2); if (limit > 3) sieve.set(3); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int g = sc.nextInt(); int games[] = new int[g]; int max = 0; for(int i=0;imax) max = games[i]; } BitSet primes = new BitSet(); Solution obj = new Solution(); obj.SieveOfAtkin(max,primes); //System.out.println(primes.cardinality()); //System.out.println(primes); for(int i=0;i