#include #include #include #include int main() { using namespace std; constexpr int m = 5e6; vector is_prime(m + 1, true); is_prime[0] = false; is_prime[1] = false; for (int i = 2; i <= m / i; i++) { if (!is_prime[i]) { continue; } for (int j = i * i; j <= m; j += i) { is_prime[j] = false; } } int n, req = 0; cin >> n; while (n--) { int a; cin >> a; req |= 1 << a; } vector count(10, 0); int r = 1, nums = 0, ans = -1; for (int l = 1; l <= m; l++) { if (r < l) { r = l; for (int i = 0; i < 10; i++) { count[i] = 0; } nums = 0; } while (r <= m) { if (is_prime[r]) { bool ng = false; for (auto c : to_string(r)) { int nc = c - '0'; if (!(req >> nc & 1)) { ng = true; } } if (ng) { break; } for (auto c : to_string(r)) { int nc = c - '0'; if (count[nc]++ == 0) { nums |= 1 << nc; } } } r++; } if (nums == req) { ans = max(ans, r - l - 1); } if (is_prime[l]) { for (auto c : to_string(l)) { int nc = c - '0'; if (--count[nc] == 0) { nums ^= 1 << nc; } } } } cout << ans << endl; }