#include #include #define incID(i, l, r) for(int i = (l) ; i < (r); i++) #define incII(i, l, r) for(int i = (l) ; i <= (r); i++) #define decID(i, l, r) for(int i = (r) - 1; i >= (l); i--) #define decII(i, l, r) for(int i = (r) ; i >= (l); i--) #define inc( i, n) incID(i, 0, n) #define inc1(i, n) incII(i, 1, n) #define dec( i, n) decID(i, 0, n) #define dec1(i, n) decII(i, 1, n) typedef long long signed int LL; typedef long long unsigned int LU; template void swap(T &x, T &y) { T t = x; x = y; y = t; return; } template T abs(T x) { return (0 <= x ? x : -x); } template T max(T a, T b) { return (b <= a ? a : b); } template T min(T a, T b) { return (a <= b ? a : b); } template bool setmin(T &a, T b) { if(a <= b) { return false; } else { a = b; return true; } } template bool setmax(T &a, T b) { if(b <= a) { return false; } else { a = b; return true; } } template T gcd(T a, T b) { return (b == 0 ? a : gcd(b, a % b)); } template T lcm(T a, T b) { return a / gcd(a, b) * b; } // ---- ---- char s[2][6]; bool ans = true; int main() { scanf("%s%s", s[0], s[1]); int len0 = 0, len1 = 0; while(s[0][len0] != '\0') { len0++; } while(s[1][len1] != '\0') { len1++; } if(len0 > 5) { ans = false; } if(len1 > 5) { ans = false; } inc(i, len0) { if('0' <= s[0][i] && s[0][i] <= '9') { } else { ans = false; } } inc(i, len1) { if('0' <= s[1][i] && s[1][i] <= '9') { } else { ans = false; } } if(len0 != 1 && s[0][0] == '0') { ans = false; } if(len1 != 1 && s[1][0] == '0') { ans = false; } if(len0 != 5 || (s[0][0] <= '1' && s[0][1] <= '2' && s[0][2] <= '3' && s[0][3] <= '4' && s[0][4] <= '5') ) { } else { ans = false; } if(len1 != 5 || (s[1][0] <= '1' && s[1][1] <= '2' && s[1][2] <= '3' && s[1][3] <= '4' && s[1][4] <= '5') ) { } else { ans = false; } printf("%s\n", ans ? "OK" : "NG"); return 0; }