# include # include #include # include #include #include #include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include #include #include #include //#include using namespace std; using LL = long long; using ULL = unsigned long long; constexpr long long MOD = 1000000000 + 7; constexpr long long INF = std::numeric_limits::max(); const double PI = acos(-1); #define fir first #define sec second #define debug(x) cerr<<#x<<": "< Pll; typedef pair> Ppll; typedef pair>> Pbll; typedef pair>> Pvll; typedef pair Vec2; struct Tll { LL first, second, third; }; typedef pair Ptll; #define rep(i,rept) for(LL i=0;i=0;i--) LL h, w, n, m, k, s, t, q, sum, last, cnt, ans,a,mem[1000]; string str,ss; struct Edge { LL to, cost; }; vectorv; bool f; char c; int d[3][2] = { {1,0} ,{0,1} ,{1,1} }; void YN(bool f) { if (f) cout << "YES" << endl; else cout << "NO" << endl; } void yn(bool f) { if (f) cout << "Yes" << endl; else cout << "No" << endl; } LL grun(int cur) { if (cur <= 5)return 0; if (mem[cur] != -1)return mem[cur]; setss; for(int i=1;i<=cur-1;i++) for (int j = i + 1; j <= cur - 1; j++) { if (i != cur - i - j&&j != cur - i - j&&min({ i,j,cur - i - j }) > 0) if (max({ i,j,cur - i - j }) - min({ i,j,cur - i - j }) <= m) ss.insert(grun(cur - i - j)^grun(i)^grun(j)); } int mex = 0; while (ss.count(mex))mex++; return mem[cur] = mex; } int main() { cin >> n >> m; rep(i, 1000)mem[i] = -1; cout << (grun(n) == 0 ? "matsu" : "kado") << endl; return 0; }