import java.util.*;
public class Main {
static ArrayList<Integer> sieve(int n) {
if (n < 2) return new ArrayList<>();
boolean[] prime = new boolean[n + 1];
prime[0] = false;
prime[1] = false;
for (int p = 2; p * p <= n; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p) prime[i] = false;
}
}
ArrayList<Integer> out = new ArrayList<>();
for (int i = 2; i <= n; i++) if (prime[i]) out.add(i);
return out;
}
static ArrayList<Integer> sieveRange(int start, int end) {
if (end < 2) return new ArrayList<>();
ArrayList<Integer> all = sieve(end);
ArrayList<Integer> res = new ArrayList<>();
for (int v : all) if (v >= start) res.add(v);
return res;
}
public static void main
(String[] args
) { int l = 1;
int r = 100;
int start = l;
int end = r;
ArrayList<Integer> primes = sieveRange(start, end);
boolean[] mark = new boolean[end + 1];
for (int p : primes) {
mark[p] = true;
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewoKICAgIHN0YXRpYyBBcnJheUxpc3Q8SW50ZWdlcj4gc2lldmUoaW50IG4pIHsKICAgICAgICBpZiAobiA8IDIpIHJldHVybiBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICBib29sZWFuW10gcHJpbWUgPSBuZXcgYm9vbGVhbltuICsgMV07CiAgICAgICAgQXJyYXlzLmZpbGwocHJpbWUsIHRydWUpOwogICAgICAgIHByaW1lWzBdID0gZmFsc2U7CiAgICAgICAgcHJpbWVbMV0gPSBmYWxzZTsKICAgICAgICBmb3IgKGludCBwID0gMjsgcCAqIHAgPD0gbjsgcCsrKSB7CiAgICAgICAgICAgIGlmIChwcmltZVtwXSkgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IHAgKiBwOyBpIDw9IG47IGkgKz0gcCkgcHJpbWVbaV0gPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBBcnJheUxpc3Q8SW50ZWdlcj4gb3V0ID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSBpZiAocHJpbWVbaV0pIG91dC5hZGQoaSk7CiAgICAgICAgcmV0dXJuIG91dDsKICAgIH0KCiAgICBzdGF0aWMgQXJyYXlMaXN0PEludGVnZXI+IHNpZXZlUmFuZ2UoaW50IHN0YXJ0LCBpbnQgZW5kKSB7CiAgICAgICAgaWYgKGVuZCA8IDIpIHJldHVybiBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICBBcnJheUxpc3Q8SW50ZWdlcj4gYWxsID0gc2lldmUoZW5kKTsKICAgICAgICBBcnJheUxpc3Q8SW50ZWdlcj4gcmVzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yIChpbnQgdiA6IGFsbCkgaWYgKHYgPj0gc3RhcnQpIHJlcy5hZGQodik7CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50IGwgPSAxOwogICAgICAgIGludCByID0gMTAwOwogICAgICAgIGludCBzdGFydCA9IGw7CiAgICAgICAgaW50IGVuZCA9IHI7CiAgICAgICAgQXJyYXlMaXN0PEludGVnZXI+IHByaW1lcyA9IHNpZXZlUmFuZ2Uoc3RhcnQsIGVuZCk7CiAgICAgICAgYm9vbGVhbltdIG1hcmsgPSBuZXcgYm9vbGVhbltlbmQgKyAxXTsKICAgICAgICBmb3IgKGludCBwIDogcHJpbWVzKSB7CiAgICAgICAgICAgIG1hcmtbcF0gPSB0cnVlOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocCk7CiAgICAgICAgfQogICAgfQp9Cg==