#include using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; #define MOD 1000000007LL #define rep(i, n) for(ll (i) = 0LL;(i) < (ll)(n);(i)++) #define rep2(i, s, e) for(ll (i) = (ll)(s);(i) < (ll)(e);(i)++) #define repi(i, n) for(ll (i) = 0LL;(i) <= (ll)(n);(i)++) #define repi2(i, s, e) for(ll (i) = (ll)(s);(i) <= (ll)(e);(i)++) #define per(i, n) for(ll (i) = (ll)(n) - 1LL;(i) >= 0LL;(i)--) #define per2(i, s, e) for(ll (i) = (ll)(s) - 1LL;(i) >= (ll)(e);(i)--) #define peri(i, n) for(ll (i) = (ll)(n);(i) >= 0LL;(i)--) #define peri2(i, s, e) for(ll (i) = (ll)(s);(i) >= (ll)(e);(i)--) #define iter(i, it) for(auto &(i): (it)) template ostream& operator<<(ostream &s, const pair m) { cout << "(" << m.first << ", " << m.second << ")"; return s; } template ostream& operator<<(ostream &s, const map m) { ll c = 0; cout << "{ "; iter(i, m) cout << i << (c++ == m.size() - 1 ? " " : ", "); cout << "}"; return s; } template ostream& operator<<(ostream &s, const vector &v) { cout << "{ "; rep(i, v.size()) cout << v[i] << (i == v.size() - 1 ? " " : ", "); cout << "}"; return s; } template ostream& operator<<(ostream &s, const list &v) { ll c = 0; cout << "{ "; iter(i, v) cout << i << (c++ == v.size() - 1 ? " " : ", "); cout << "}"; return s; } int main(void) { ll N; ll ans = -1; cin >> N; vector T(N); set kai{0, 2, 4, 5, 7, 9, 11}; rep(i, N) cin >> T[i]; rep(i, 12) { set kai2; iter(k, kai) kai2.insert((k + i) % 12); iter(j, T) { if(kai2.find(j) == kai2.end()) goto aaa; } if(ans != -1) { cout << -1 << endl; return 0; } ans = i; aaa:; } cout << ans << endl; return 0; }