#include<stdio.h>
#define MAX_N 300
int m,n;
int arr[MAX_N];
int visited[MAX_N];
int visited2[MAX_N];
int flag[MAX_N];

void init();
void rec(int);
int solve(int);

int main(){
  int i,j,a,b;
  while(1){
    init();
    scanf("%d",&m);
    if(m==0)break;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
      scanf("%d",&a);
      b=i+a;
      if(b<0)b=0;
      if(b>n+1)b=n+1;
      arr[i]=b;
    }
    for(i=0;i<=n+1;i++){
      if(arr[i]==n+1)rec(i);
    }
    /*
    for(i=0;i<=n+1;i++){
      printf("%d ",visited[i]);
    }
    printf("\n");
    */
    flag[n+1]=1;
    if(solve(0))printf("NG\n");
    else printf("OK\n");
  }
  return 0;
}

int solve(int pos){
  if(visited2[pos])return 0;
  visited2[pos]=1;
  if(!flag[pos])return 1;
  int i,a;
  for(i=1;i<=m;i++){
    a=pos+i;
    if(a>n+1)break;
    a=arr[a];
    if( solve(a) )return 1;
  }
  return 0;
}

void rec(int pos){
  if(visited[pos])return;
  visited[pos]=1;
  int i,j,a;
  for(i=1;i<=m;i++){
    a=pos-i;
    if(a<0)break;
    flag[a]=1;
    for(j=0;j<=n+1;j++){
      if(arr[j]==a)rec(j);
    }
  }
}

void init(){
  int i,j;
  for(i=0;i<MAX_N;i++){
    arr[i]=i;
    visited[i]=0;
    visited2[i]=0;
    flag[i]=0;
  }
}