#include <iostream>
#include <iomanip>
#include <ios> 
#include <vector>
#include <string>
#include <algorithm>
#include <functional>
#include <queue>
#include <stack>
#include <set>
#include <cmath>
#include <bitset>
#include <map>
#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
#define rep1(i,n) for(int i=1;i<=(int)(n);i++)
#define sz(c) ((int)(c).size())

using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
//const int MOD=1e9+7;

int dif(vi v){
	int l=sz(v);
	sort(v.begin(),v.end());
	int d=50;
	rep(i,l-1)d=min(d,v[i+1]-v[i]);
	d=min(d,24-v[l-1]);
	return d;
}

int main(){
	int N;
	cin>>N;
	int ct[13];
  	rep(i,13)ct[i]=0;
	rep(i,N){
		int D;
		cin>>D;
		ct[D]++;
	}
	bool pos=true;
	if(ct[0]>0)pos=false;
	rep1(i,11)if(ct[i]>2)pos=false;
	if(ct[12]>1)pos=false;
	
	if(!pos){
		cout<<0<<endl;
		return 0;
	}
	int ans=0;
	vi t;
	t.push_back(0);
	if(ct[12])t.push_back(12);
	rep(b,1<<11){
		vi u=t;
		rep1(i,11){
			if(ct[i]==2){
				u.push_back(i);
				u.push_back(24-i);
			}
			if(ct[i]==1){
				if((b>>(i-1))&1)u.push_back(i);
				else u.push_back(24-i);
			}
		}
		int k=dif(u);
		ans=max(ans,k);
	}
	cout<<ans<<endl;
}