#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <map>
#include <list>
#include <set>
#include <numeric>
#include <queue>
#include <stack>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <climits>
#include <cfloat>
#include <ctime>
#include <complex>
#include <cassert>
#include <iomanip>
#include <tuple>
using namespace std;
typedef long long LL;
typedef pair<int,int> P;

template<int D>
bool solve(double a[][D], double x[], double b[], int n)
{
	double m[D][D+1];
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			m[i][j]=a[i][j];
		}
		m[i][n]=b[i];
	}
	for(int i=0;i<n;i++){
		double u=0;
		int uj=-1;
		for(int j=i;j<n;j++){
			int v=abs(m[j][i]);
			if(v>u){
				u=v;
				uj=j;
			}
		}
		// 一意の解がない
		if(uj==-1){
			return false;
		}
		double d=m[uj][i];
		for(int k=i;k<=n;k++){
			swap(m[uj][k],m[i][k]);
			m[i][k]/=d;
		}
		for(int j=0;j<n;j++){
			if(j==i)continue;
			double p=m[j][i];
			for(int k=i;k<=D;k++){
				m[j][k]-=p*m[i][k];
			}
		}
	}
	for(int i=0;i<n;i++){
		x[i]=m[i][n];
	}
	return true;
}
int main() {
while(1){
	int d=0;
	double a[5+2][5+1];
	double b[5+2];
	cin >> d;
	if(d==0)return 0;
	double w[5+3][5+1];
	double v[5+3]; 
	for(int i=0;i<d+3;i++){
		cin >> v[i];
		double p=1;
		for(int j=0;j<d+1;j++){
			w[i][j]=p;
			p*=i;
		}
	}
	for(int p=0;p<d+3;p++){
		int k=0;
		for(int i=0;i<d+3;i++){
			if(p==i)continue;
			for(int j=0;j<d+1;j++){
				a[k][j]=w[i][j];
			}
			b[k]=v[i];
			k++;
		}
		double x[5+1];
		solve(a,x,b,d+1);
		double dot=0;
		for(int i=0;i<d+1;i++){
			dot+=x[i]*a[d+1][i];
		}
		if(abs(dot-b[d+1])<0.1){
			cout << p << endl;
			break;
		}
	}
}}