#include #include #define rep(i,n) for(int i=0;i vi; typedef vector vl; typedef vector> vvi; typedef vector> vvl; typedef long double ld; typedef pair P; template std::ostream& operator<<(std::ostream& os, const atcoder::static_modint& a) {os << a.val(); return os;} template istream& operator>>(istream& is, vector& v){int n = v.size(); assert(n > 0); rep(i, n) is >> v[i]; return is;} template ostream& operator<<(ostream& os, const vector& v){int n = v.size(); rep(i, n) os << v[i] << (i == n - 1 ? "\n" : " "); return os;} template ostream& operator<<(ostream& os, const vector>& v){int n = v.size(); rep(i, n) os << v[i] << (i == n - 1 ? "\n" : ""); return os;} int main(){ int x, y; cin >> x >> y; auto s = [&](){ if(x == 0){ cout << 2 << ' ' << y << "\n"; return; } if(y == 0){ cout << 1 << ' ' << x << "\n"; return; } if(x >= y){ cout << 1 << ' ' << x - y + 1 << "\n"; return; }else{ cout << 2 << ' ' << y - x + 1 << "\n"; return; } }; auto t = [&](){ char z; cin >> z; if(z == 'A'){ int i; int d; cin >> i >> d; if(i == 1) x -= d; if(i == 2) y -= d; return false; } if(z == 'B'){ x = 0; y = 0; return false; } if(z == 'C'){ return true; } if(z == 'D'){ return true; } assert(true); return true; }; if(x - y == 1 or y - x == 1){ cout << "Second\n"; }else{ cout << "First\n"; s(); } while(true){ if(t()) break; s(); } return 0; }