In CODE FESTIVAL XXXX, there are N+1 participants from all over the world, including Takahashi.

Takahashi checked and found that the time gap (defined below) between the local times in his city and the i-th person's city was D_i hours. The time gap between two cities is defined as follows. For two cities A and B, if the local time in city B is d o'clock at the moment when the local time in city A is 0 o'clock, then the time gap between these two cities is defined to be min(d,24-d) hours. Here, we are using 24-hour notation. That is, the local time in the i-th person's city is either d o'clock or 24-d o'clock at the moment when the local time in Takahashi's city is 0 o'clock, for example.

Then, for each pair of two people chosen from the N+1 people, he wrote out the time gap between their cities. Let the smallest time gap among them be s hours.

Find the maximum possible value of s.

Constraints

* 1 \leq N \leq 50
* 0 \leq D_i \leq 12
* All input values are integers.

Input

Input is given from Standard Input in the following format:


N
D_1 D_2 ... D_N


Output

Print the maximum possible value of s.

Examples

Input

3
7 12 8


Output

4


Input

2
11 11


Output

2


Input

1
0


Output

0
#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;
}