#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;

int main(){
  int m=2;
  int count[101];
  for(int i=1;i<=100;i++)
    count[i]=0;

  vector<int> list[101];

  int a,b;
  while(cin >> a >> b){
    if(a>0 && b>0){
      count[a]++; count[b]++;
      m=max(m,max(a,b));

      list[a].push_back(b);
      list[b].push_back(a);
    }else{
      bool f[101];
      for(int i=1;i<=m;i++) f[i]=false;

      stack<int> cur;
      cur.push(1);
      f[1]=true;
      while(!cur.empty()){
        bool flg=false;
        for(vector<int>::iterator it=list[cur.top()].begin();it!=list[cur.top()].end();it++){
          if(!f[*it]){
            f[*it]=true;
            cur.push(*it);
            flg=true;
            break;
          }
        }
        if(flg) continue;
        cur.pop();
      }

      bool flg=true;
      for(int i=1;i<=m;i++) flg=(flg && f[i]);

      flg=(flg && (count[1]%2==1) && (count[2]%2==1));
      for(int i=3;i<=m;i++) flg=(flg && (count[i]%2==0));

      if(flg) cout << "OK" << endl;
      else cout << "NG" << endl;

      for(int i=1;i<=100;i++){
        count[i]=0;
        list[i].clear();
      }
      m=2;
    }
  }

  return 0;  
}