#include using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; typedef unsigned long long ull; typedef unsigned long long ull; ull gcd(ull a, ull b){ return b==0?a:gcd(b,a%b); } ull mulMod(ull a, ull b, ull mod){ ull res = 0; a %= mod; while(b){ if(b&1) res = (res+a)%mod; a = (a*2ULL)%mod; b = b/2ULL; } return res; } ull PollardRho(ull n, ull c=1){ if(c>10) return -1ULL; ull x,y,p; x = p = 1ULL; int next=2, i=1; while(p==1){ ++i; if(i==next){ y=x; next*= 2; } x = (mulMod(x,x,n)+c)%n; if(y==x) return PollardRho(n,c+1); p = gcd(n,llabs(x-y)); } return p; } vector solvePollardRho(ull n){ vector ret; ull r; while(true){ if(n==1) break; r = PollardRho(n); if(r==-1ULL){ ret.push_back(n); sort(ret.begin(), ret.end()); return ret; } ret.push_back(r); n = n/r; } sort(ret.begin(), ret.end()); return ret; } int main(){ ull A, B; cin >> A >> B; vector x = solvePollardRho(A); vector y = solvePollardRho(B); map cntA, cntB, cnt; rep(i,x.size()){ cntA[x[i]]++; cnt[x[i]] = 1; } rep(i,y.size()){ cntB[y[i]]++; cnt[y[i]] = 1; } ull ans = 1; FOR(it,cnt){ ull val = it->first; ull mn = min(cntA[val], cntB[val]); ans *= (mn+1); } if(ans % 2 == 0) cout << "Even" << endl; else cout << "Odd" << endl; return 0; }