package q0xx; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Arrays; import java.util.InputMismatchException; public class Q34 { static InputStream is; static PrintWriter out; static String INPUT = ""; static void solve() { int[] primes = sieveEratosthenesL(5000000); int[] pptn = new int[5000001]; for(int i = 0;i < primes.length;i++){ int x = primes[i]; int lptn = 0; while(x > 0){ lptn |= 1< 0 && ptn<<~j>=0){ for(int k = 0;k <= 9;k++){ if(pptn[tail]<<~k<0)f[k]--; } tail++; continue inner; } } break; } for(int j = 0;j <= 9;j++){ if((f[j] > 0) != (ptn<<~j<0))continue outer; } maxlen = Math.max(maxlen, head-tail); } out.println(maxlen); } public static int[] sieveEratosthenesL(int n) { if(n <= 64){ int[] primes = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61}; for(int i = 0;i < primes.length;i++){ if(n < primes[i]){ return Arrays.copyOf(primes, i); } } return primes; } int u = n+64; double lu = Math.log(u); int[] ret = new int[(int)(u/lu+u/lu/lu*1.5)]; ret[0] = 2; int pos = 1; long[] isnp = new long[(n+1)/64/2+1]; int sup = (n+1)/64/2+1; int[] tprimes = {3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61}; for(int tp : tprimes){ ret[pos++] = tp; long[] ptn = new long[tp]; for(int i = (tp-3)/2;i < tp<<6;i+=tp)ptn[i>>6] |= 1L<>>58)]; int p = 2*pp+3; if(p > n)break; ret[pos++] = p; if((long)p*p > n)continue; for(int q = (p*p-3)/2;q <= h;q += p)isnp[q>>6] |= 1L<= lenbuf){ ptrbuf = 0; try { lenbuf = is.read(inbuf); } catch (IOException e) { throw new InputMismatchException(); } if(lenbuf <= 0)return -1; } return inbuf[ptrbuf++]; } private static boolean isSpaceChar(int c) { return !(c >= 33 && c <= 126); } private static int skip() { int b; while((b = readByte()) != -1 && isSpaceChar(b)); return b; } private static double nd() { return Double.parseDouble(ns()); } private static char nc() { return (char)skip(); } private static String ns() { int b = skip(); StringBuilder sb = new StringBuilder(); while(!(isSpaceChar(b))){ // when nextLine, (isSpaceChar(b) && b != ' ') sb.appendCodePoint(b); b = readByte(); } return sb.toString(); } private static char[] ns(int n) { char[] buf = new char[n]; int b = skip(), p = 0; while(p < n && !(isSpaceChar(b))){ buf[p++] = (char)b; b = readByte(); } return n == p ? buf : Arrays.copyOf(buf, p); } private static char[][] nm(int n, int m) { char[][] map = new char[n][]; for(int i = 0;i < n;i++)map[i] = ns(m); return map; } private static int[] na(int n) { int[] a = new int[n]; for(int i = 0;i < n;i++)a[i] = ni(); return a; } private static int ni() { int num = 0, b; boolean minus = false; while((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')); if(b == '-'){ minus = true; b = readByte(); } while(true){ if(b >= '0' && b <= '9'){ num = num * 10 + (b - '0'); }else{ return minus ? -num : num; } b = readByte(); } } private static long nl() { long num = 0; int b; boolean minus = false; while((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')); if(b == '-'){ minus = true; b = readByte(); } while(true){ if(b >= '0' && b <= '9'){ num = num * 10 + (b - '0'); }else{ return minus ? -num : num; } b = readByte(); } } private static void tr(Object... o) { if(INPUT.length() != 0)System.out.println(Arrays.deepToString(o)); } }