#include <bits/stdc++.h>
using namespace std;

int ma;
int n;

vector<int> graph2[300];
vector<int> graph1[300];
vector<int> graph3[300];

vector<int> vs;
bool used[300];
int cmp[300];

void dfs(int v){
    used[v] = true;

    for(int i = 0;i < graph1[v].size();i++){
        if(!used[graph1[v][i]]) dfs(graph1[v][i]);
    }

    vs.push_back(v);
}

void rdfs(int v, int k){
    used[v] = true;
    cmp[v] = k;
    for(int i = 0;i < graph2[v].size();i++){
        if(!used[graph2[v][i]]) rdfs(graph2[v][i], k);
    }
}

int memo[300];

bool dfs3(int idx){
    if(idx == cmp[n-1]){
        return true;
    }

    if(graph3[idx].size() == 0){
        return false;
    }

    if(memo[idx] != -1){
        return memo[idx];
    }

    bool ans = true;
    for(int i = 0;i < graph3[idx].size();i++){
        ans = (ans && dfs3(graph3[idx][i]));
    }

    return memo[idx] = ans;
}


int scc(){
    memset(used, 0, sizeof(used));
    memset(cmp, 0, sizeof(cmp));
    vs.clear();

    for(int i = 0;i < n;i++){
        if(!used[i]) dfs(i);
    }

    memset(used, 0, sizeof(used));

    int k = 0;
    for(int i = vs.size()-1;i >= 0;i--){
        if(!used[vs[i]]) rdfs(vs[i], k++);
    }

    return k;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    while(cin >> ma, ma != 0){
        cin >> n;

        int a[310] = {};

        for(int i = 0;i < n;i++){
            cin >> a[i+1];
        }
        n+=2;
        for(int i = 0;i < n;i++){
            graph1[i].clear();
            graph2[i].clear();
            graph3[i].clear();
        }

        for(int i = 0;i < n;i++){
            for(int j = i+1;j < min(i+ma+1, n);j++){
                int tmp = min(n-1, max(j+a[j], 0));
                graph1[i].push_back(tmp);
                graph2[tmp].push_back(i);
            }
        }

        scc();
        for(int i = 0;i < n;i++){
            for(int j = i+1;j < min(i+ma+1, n);j++){
                int tmp = min(n-1, max(j+a[j], 0));
                if(cmp[i] != cmp[tmp]){
                    graph3[cmp[i]].push_back(cmp[tmp]);
                }
            }
        }


        memset(memo, -1, sizeof(memo));

        if(dfs3(cmp[0])){
            cout << "OK" << endl;
        }else{
            cout << "NG" << endl;
        }

    }

    return 0;
}



