#include <bits/stdc++.h>
using namespace std;
const long double pi = 3.14159265358979323;
const long long mod1 = 1e9 + 7;
const long long mod2 = 1e18;
const long long mod3 = 9e18;
const long long N = 1e7 + 7;
long long power(long long x, long long n) {
  if (n == 0) return 1;
  long long temp = power(x, n / 2);
  if (n % 2 == 0)
    return temp * temp;
  else
    return x * temp * temp;
}
long long MAX(long long a, long long b) { return a > b ? a : b; }
long long MAX(long long a, long long b, long long c) {
  return max(max(a, b), c);
}
long long MIN(long long x, long long y) { return x + y - MAX(x, y); }
long long MIN(long long x, long long y, long long z) {
  return min(min(x, y), z);
}
long long gcd(long long a, long long b) {
  if (a < b) return gcd(b, a);
  if (b == 0) return a;
  return gcd(b, a % b);
}
void swap(int* a, int* b) {
  int t = *a;
  *a = *b;
  *b = t;
}
bool f(long long x, long long y) { return x > y; }
long long pmod(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = (ans * a) % mod1;
    b /= 2;
    a = (a * a) % mod1;
  }
  return ans;
}
vector<long long> adj[100001];
long long vis[100001];
long long sssp[100001];
void solve() {
  long long n;
  cin >> n;
  long long o = 0;
  long long e = 0;
  for (int i = 0; 0 < n ? i < n : i > n; 0 < n ? i += 1 : i -= 1) {
    long long t;
    cin >> t;
    if (t % 2 != i % 2) {
      if (i % 2 == 0)
        e++;
      else
        o++;
    }
  }
  if (e != o)
    cout << "-1" << endl;
  else
    cout << e << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t;
  cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}
