//#define __USE_MINGW_ANSI_STDIO 0
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<ll> VL;
typedef vector<VL> VVL;
typedef pair<int, int> PII;

#define FOR(i, a, n) for (ll i = (ll)a; i < (ll)n; ++i)
#define REP(i, n) FOR(i, 0, n)
#define ALL(x) x.begin(), x.end()
#define IN(a, b, x) (a<=x&&x<b)
#define MP make_pair
#define PB push_back
#define MOD 1000000007
#define INF (1LL<<30)
#define LLINF (1LL<<60)
#define PI 3.14159265359
#define EPS 1e-3
//#define int ll

int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};

double v[10];

typedef vector<double> vec;
typedef vector<vec> mat;

// Ax = b????§£??? A?????£?????????
vec gauss_jordan(const mat& A, const vec& b) {
  int n = A.size();
  //cout << n << endl;
  mat B(n, vec(n+1));
  REP(i, n) REP(j, n) B[i][j] = A[i][j];
  REP(i, n) B[i][n] = b[i];
  /*REP(i, n) {
    REP(j, n+1) {
      cout << B[i][j] << " ";
    }
    cout << endl;
  }*/

  REP(i, n) {
    int pivot = i;
    FOR(j, i, n) if(abs(B[j][i]) > abs(B[pivot][i])) pivot = j;
    swap(B[i], B[pivot]);

    // cout << "i:" << i << endl;
    // cout << B[i][i] << endl;
    //?§£????±????????????????
    if(abs(B[i][i]) < EPS) {
      //cout << "ret" << endl;
      return vec(n, INF);
    }
    // cout << "b" << endl;

    FOR(j, i+1, n+1) B[i][j] /= B[i][i];
    REP(j, n) {
      if(i != j) {
        FOR(k, i+1, n+1) B[j][k] -= B[j][i] * B[i][k];
      }
    }
  }
  vec x(n);
  REP(i, n) x[i] = B[i][n];
  return x;
}

signed main(void)
{
  while(true) {
    int d;
    cin >> d;
    if(!d) break;
    REP(i, d+3) cin >> v[i];

    mat c(d+3, vec(d+1));
    REP(i, d+3) {
      //cout << "i:" << i << endl;
      mat a(d+1, vec(d+1, 0));
      vec b(d+1);
      REP(j, d+1) {
        // cout << "j:" << j << endl;
        int idx = (i+j) % (d+3);
        // cout << idx << endl;
        b[j] = v[idx];
        double tmp = 1;
        a[j][0] = 1;
        FOR(k, 1, d+1) {
          // cout << "k:" << k << endl;
          tmp *= idx;
          a[j][k] = tmp;
        }
      }
      /* REP(j, d+1) {
        REP(k, d+1) {
          cout << a[j][k] << " ";
        }
        cout << endl;
      }
      REP(j, d+1) cout << b[j] << " "; cout << endl;*/
      c[i] = gauss_jordan(a, b);
      // cout << "gauss" << endl;
    }

    // cout << "a" << endl;
    /*cout << fixed << setprecision(9);
    REP(i, d+3) {
      REP(j, d+1) {
        cout << c[i][j] << " ";
      }
      cout << endl;
    }*/

    PII ind{-1, -1};
    REP(i, d+3) {
      bool flag;
      REP(j, d+3) {
        if(i == j) continue;
        //c[i] ??¨ c[j] ????????´???????????????
        flag = true;
        REP(k, d+1) {
          if(abs(c[i][k]-c[j][k]) > EPS) {
            //cout << i << " " << j << " " << k << " " << c[i][k] << " " << c[j][k] << " " << abs(c[i][k]-c[j][k]) << endl;
            flag = false;
          }
        }
        if(flag) {
          ind = {i, j};
          break;
        }
      }
      if(flag) break;
    }
    //cout << ind.first << " " << ind.second << endl;
    int flag[10] = {};
    REP(i, d+3) {
      if(i == ind.first || i == ind.second) continue;
      REP(j, d+1) {
        int idx = (i+j) % (d+3);
        flag[idx]++;
      }
    }
    REP(i, d+3) {
      if(flag[i] == d+1) cout << i << endl;
    }
  }

  return 0;
}

Measured memory_bytes: 3204