#include using namespace std; using i64 = int64_t; using vi = vector; using vvi = vector; const int nax = 5000001; vi ps; int main() { ps = vi(nax, 1); ps[0] = ps[1] = 0; for (int i = 2; i < nax; i++) { if (!ps[i]) continue; for (int j = 2; i * j < nax; j++) { ps[i * j] = 0; } } vi qs; for (int i = 0; i < nax; i++) { if (ps[i]) qs.push_back(i); } int n; cin >> n; set use; for (int i = 0; i < n; i++) { int a; cin >> a; use.insert(a); } set ss; int l = 0, r = 0; i64 width = -1; while (1) { if (use != ss) { if (r == qs.size()) break; int q = qs[r]; int ok = 1; while (q) { if (use.count(q % 10) == 0) { ok = 0; } q /= 10; } if (ok) { q = qs[r]; while (q) { ss.insert(q % 10); q /= 10; } if (use == ss) { width = max(width, ((r + 1 == qs.size() ? nax : qs[r + 1]) - 1) - ((l == 0 ? 0 : qs[l - 1]) + 1)); } r++; } else { l = r + 1; r = l; ss.clear(); } } else { if (r == qs.size()) break; int q = qs[r]; int ok = 1; while (q) { if (use.count(q % 10) == 0) { ok = 0; } q /= 10; } if (ok) { width = max(width, ((r + 1 == qs.size() ? nax : qs[r + 1]) - 1) - ((l == 0 ? 0 : qs[l - 1]) + 1)); r++; } else { l = r + 1; r = l; ss.clear(); } } } cout << width << endl; }