/*#include <bits/stdc++.h>
using namespace std;
#define HA 10000
int main()
{
int dp[11][20001]={}, arr[101];
int n, t;
scanf("%d %d", &n, &t);
for(int i=1;i<=n;i++)scanf("%d", &arr[i]);
dp[2][arr[1]-arr[2]+HA]=1;
for(int i=2;i<=n-1;i++)
{
for(int j=0;j<=20000;j++)
{
if(dp[i][j]!=0)
{
dp[i+1][j-arr[i+1]]=1;
dp[i+1][j+arr[i+1]]=2;
}
}
}
int dab[101]={}, top=0, start=t+HA, cnt=0;
//printf("%d", dp[n][start]);
for(int i=n;i>=2;i--)
{
if(dp[i-1][start+arr[i]]!=0||i==2)
{
if(dp[i][start]==2)
{
cnt++;
}
else
{
top++;
dab[top]=dp[i][start];
for(int j=1;j<=cnt;j++)
{
top++;
dab[top]=2;
}
cnt=0;
}
start+=arr[i];
}
else if(dp[i-1][start-arr[i]]!=0||i==2)
{
if(dp[i][start]==2)
{
cnt++;
}
else
{
top++;
dab[top]=dp[i][start];
for(int j=1;j<=cnt;j++)
{
top++;
dab[top]=2;
}
cnt=0;
}
start-=arr[i];
}
}
for(int i=top;i>=1;i--)
{
printf("%d\n", dab[i]);
}
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int main()
{
int arr[9][9], n;
scanf("%d", &n);
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)scanf("%d", &arr[i][j]);
}
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)arr[i][j]-=n;
}
for(int i=1;i<=8;i++)
{
for(int j=1;j<=8;j++)
printf("%d ", arr[i][j]);
printf("\n");
}
}
*/
/*
#include <bits/stdc++.h>
using namespace std;
int tim[10001], n, v, c;
vector<pair<int, int> > arr[10001];
void dijkstra()
{
priority_queue<pair<int, int> > pq;
tim[c]=0;
pq.push({0, c});
while(!pq.empty())
{
int next=pq.top().second, nextim=-pq.top().first;
pq.pop();
for(int i=0;i<arr[next].size();i++)
{
int connect=arr[next][i].first, connecttim=arr[next][i].second;
if(tim[connect]==-1||tim[connect]>nextim+connecttim)
{
tim[connect]=nextim+connecttim;
pq.push({-tim[connect], connect});
}
}
}
}
pair<int, int> haha()
{
int fir=0, sec=0;
for(int i=1;i<=n;i++)
{
if(tim[i]==-1)continue;
fir++;
sec=max(sec, tim[i]);
}
return make_pair(fir, sec);
}
int main()
{
int t, a, b, s;
pair<int, int> ans;
scanf("%d", &t);
while(t--)
{
memset(tim, -1, sizeof(tim));
for(int i=0;i<=10000;i++)arr[i].clear();
scanf("%d %d %d", &n, &v, &c);
for(int i=1;i<=v;i++)
{
scanf("%d %d %d", &a, &b, &s);
arr[b].push_back({a, s});
}
dijkstra();
ans=haha();
printf("%d %d\n", ans.first, ans.second);
}
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int n, m;
int visited[1001], link[1001];
vector<int>arr[1001];
bool dfs(int x)
{
if(visited[x])return false;
visited[x]=1;
for(int i=0;i<arr[x].size();i++)
{
if(link[arr[x][i]]==0||dfs(link[arr[x][i]]))
{
link[arr[x][i]]=x;
return true;
}
}
return false;
}
int main()
{
scanf("%d %d", &n, &m);
int k, a;
for(int i=1;i<=n;i++)
{
scanf("%d", &k);
for(int j=1;j<=k;j++)
{
scanf("%d", &a);
arr[i].push_back(a);
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int i=0;i<=1000;i++)visited[i]=0;
if(dfs(i))ans++;
}
printf("%d\n", ans);
//for(int i=1;i<=m;i++)printf("%d ", link[i]);
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int visited[1001], link[1001], n, m;
vector<int> arr[1001];
int dfs(int x, int y)
{
if(visited[x]>2)return 0;
visited[x]++;
int connect, ret=0;
for(int i=0;i<arr[x].size();i++)
{
connect=arr[x][i];
if(link[connect]==0||dfs(link[connect], 1)>=1)
{
link[connect]=x;
ret++;
}
if(ret==2)break;
if(ret==1&&y==1)break;
}
return ret;
}
int main()
{
scanf("%d %d", &n, &m);
int k, a;
for(int i=1;i<=n;i++)
{
scanf("%d", &k);
for(int j=1;j<=k;j++)
{
scanf("%d", &a);
arr[i].push_back(a);
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
memset(visited, 0, sizeof(visited));
ans+=dfs(i, 0);
}
printf("%d\n", ans);
for(int i=1;i<=m;i++)printf("%d ", link[i]);
}
*/
//#include <bits/stdc++.h>
//using namespace std;
//
//int n, m;
//int visited[1001], link[1001];
//vector<int>arr[1001];
//
//bool dfs(int x)
//{
// if(visited[x])return false;
// visited[x]=1;
// for(int i=0;i<arr[x].size();i++)
// {
// if(link[arr[x][i]]==0||dfs(link[arr[x][i]]))
// {
// link[arr[x][i]]=x;
// return true;
// }
// }
// return false;
//}
//
//int main()
//{
// scanf("%d %d", &n, &m);
// int k, a;
// for(int i=1;i<=n;i++)
// {
// scanf("%d", &k);
// for(int j=1;j<=k;j++)
// {
// scanf("%d", &a);
// arr[i].push_back(a);
// }
// }
// int ans=0;
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=2;j++){
// for(int i=0;i<=1000;i++)visited[i]=0;
// if(dfs(i))ans++;
// }
// }
// printf("%d\n", ans);
// //for(int i=1;i<=m;i++)printf("%d ", link[i]);
//}
//
#include <bits/stdc++.h>
using namespace std;
int ans[100], prime[2000], lef[100], rig[100], n, arr[51], rightop,, leftop;
void haha(int node)
{
for(int i=1;i<=leftop;i++)
{
if(!visited[i])
{
visited[i]=true;
}
}
}
int main()
{
scanf("%d", &n);
for(int i=1;i<=n;i++)
scanf("%d", &arr[i]);
for(int i=1;i<=n;i++)
{
if(arr[i]%2==0)
{
rightop++;
rig[rightop]=arr[i];
}
else
{
leftop++;
lef[leftop]=arr[i];
}
}
if(rightop!=leftop)
{
printf("-1");
return 0;
}
haha();
}