/*
 * src.cpp
 *
 *  Created on: 2016/08/09
 *      Author: joi
 */

#include <bits/stdc++.h>

using namespace std;

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,a) FOR(i,0,a)

const int MAX_N=250,MAX_MAX=250;

int MAX,N,D[MAX_N+MAX_MAX+8];

bool flg[2][MAX_N+2];

vector<int> G[2][MAX_N+2];

void bfs(){
	REP(r,2){
		REP(i,N+2){
			flg[r][i]=false;
		}
		int s= !r ? 0 : N+1;
		flg[r][s]=true;
		queue<int> q;
		q.push(s);
		while (!q.empty()){
			int v=q.front();
			q.pop();
			REP(i,(int)G[r][v].size()){
				int to=G[r][v][i];
				if (!flg[r][to]){
					flg[r][to]=true;
					q.push(to);
				}
			}
		}
	}
}

int main(){
	do{
		cin>>MAX;
		if (MAX){
			cin>>N;
			memset(D,0,sizeof(D));
			FOR(i,1,N+1){
				cin>>D[i];
			}
			REP(i,2) REP(j,N+2) G[i][j].clear();
			REP(i,N+1){
				FOR(j,1,MAX+1){
					int to=i+j+D[i+j];
					to=max(to,0);
					to=min(to,N+1);
					G[0][i].push_back(to);
					G[1][to].push_back(i);
				}
			}
			bfs();
			bool f=true;
			REP(i,N+2){
				if (flg[0][i] && !flg[1][i]){
					f=false;
					break;
				}
			}
			if (f){
				cout<<"OK"<<endl;
			}else{
				cout<<"NG"<<endl;
			}
		}
	}while(MAX);
	return 0;
}