#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e12;
const long long MOD = 1e9 + 7;
long long sq(long long num) { return num * num; }
long long mod_pow(long long x, long long n) {
  if (n == 0) return 1;
  if (n == 1) return x % MOD;
  long long res = sq(mod_pow(x, n / 2));
  res %= MOD;
  if (n % 2 == 1) {
    res *= x;
    res %= MOD;
  }
  return res;
}
long long mod_add(long long a, long long b) { return (a + b) % MOD; }
long long mod_sub(long long a, long long b) { return (a - b + MOD) % MOD; }
long long mod_mul(long long a, long long b) { return a * b % MOD; }
int n;
int d[100100];
int cnt[100100];
int main() {
  cin >> n;
  for (int i = 0; i < (n); i++) cin >> d[i];
  if (n == 1)
    cout << d[0] << endl;
  else {
    cnt[0] = 1;
    for (int i = 0; i < (n); i++) {
      cnt[d[i]]++;
      cnt[24 - d[i]]++;
    }
    vector<int> vi;
    bool f = 0;
    for (int i = 0; i < (13); i++) {
      if (cnt[i] == 2) {
        vi.push_back(i);
        if (24 - i != 12) vi.push_back(24 - i);
      } else if (cnt[i] == 1) {
        if (f == 0)
          vi.push_back(i);
        else
          vi.push_back(24 - i);
        f = !f;
      } else if (cnt[i] == 3) {
        cout << 0 << endl;
        return 0;
      }
    }
    sort((vi).begin(), (vi).end());
    int ans = 1e9;
    for (int i = 0; i < (vi.size()); i++) {
      ans = min(ans, vi[i + 1] - vi[i]);
    }
    f = 1;
    vi.clear();
    for (int i = 0; i < (13); i++) {
      if (cnt[i] && cnt[24 - i]) {
        vi.push_back(i);
        if (24 - i != 12) vi.push_back(24 - i);
      } else if (f == 0) {
        if (cnt[i]) {
          vi.push_back(i);
          f = 1;
        }
      } else {
        if (cnt[24 - i]) {
          vi.push_back(24 - i);
          f = 0;
        }
      }
    }
    sort((vi).begin(), (vi).end());
    int buf = 1e9;
    for (int i = 0; i < (vi.size() - 1); i++) buf = min(buf, vi[i + 1] - vi[i]);
    cout << max(ans, buf) << endl;
  }
}
