#include "bits/stdc++.h"
using namespace std;
const double EPS=1e-8;
typedef vector<double> vec;
typedef vector<vec> mat;

//Ax=bを解く
//解が一意でない場合は長さ0の配列
vec solve(const mat &A, const vec &b)
{
	int n=A.size();
	//cerr<<n<<endl;
	mat B(n,vec(n+1));
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
			B[i][j]=A[i][j];
	}
	for(int i=0;i<n;i++)
		B[i][n]=b[i];
	
	for(int i=0;i<n-1;i++)
	{
		int pivot=i;
		for(int j=i;j<n;j++)
		{
			if(abs(B[j][i])>abs(B[pivot][i]))
				pivot=j;
		}
		swap(B[i],B[pivot]);

		//解がない
		if(abs(B[i][i])<EPS)
			return vec();
		
		for(int j=i+1;j<=n;j++)
			B[i][j]/=B[i][i];
		for(int j=0;j<n;j++)
		{
			if(i!=j)
			{
				for(int k=i+1;k<=n;k++)
					B[j][k]-=B[j][i]*B[i][k];
			}
		}
	}
	vec x(n);
	for(int i=0;i<n;i++)
	{
		//cerr<<B[i][n]<<endl;
		x[i]=B[i][n];
	}
	return x;
}

vec v;
mat a;
mat mother;
vec b;
int main()
{
	while(1)
	{
		v.clear();
		mother.clear();
		int d;
		cin>>d;
		if(d==0)
			break;
		for(int i=0;i<d+3;i++)
		{
			double c;
			cin>>c;
			v.push_back(c);
		}
		//motherを構成する
		for(int i=0;i<v.size();i++)
		{
			vec tmp;
			for(int j=d;j>0;j--)
				tmp.push_back(pow(i,j));
			tmp.push_back(1);
			tmp.push_back(0);
			mother.push_back(tmp);
		}
		//aを構成する
		//vからひとつずつ抜いて連立方程式を解く
		//解けたら抜いたvが誤り
		for(int i=0;i<d+3;i++)
		{
			b.clear();
			a.clear();
			for(int j=0;j<d+3;j++)
			{
				if(i==j)
					continue;
				a.push_back(mother[j]);
				b.push_back(v[j]);
			}
			/*
			for(int i=0;i<a.size();i++)
			{
				for(int j=0;j<a[i].size();j++)
					cerr<<a[i][j]<<" ";
				cerr<<"\t"<<b[i]<<endl;
			}*/
			//解く
			vec ans=solve(a,b);
			if(ans.size()==0)
				continue;
			//残りの部分に当てはめて正しければ答え
			if(abs(ans[d+1])<1e-5)
			{
				cout<<i<<endl;
				break;
			}
		}
	}
	return 0;
}
