#include using namespace std; using ll = long long; using lll =__int128; using ld = long double; #define mod99 998244353 #define mod107 1000000007 #define endl "\n" #define rep(i,n) for (ll i = 0; i < (ll)(n); ++i) #define prep(i,a,n) for (ll i = a; i < n; ++i) #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(), a.rend() #define si(x) ((long long)(x).size()) #define yn(bool) if(bool){cout<<"Yes"< inline T gcd(T a,T b) {return (b==0)?a:gcd(b,a%b);} template inline T lcm(T a, T b) {return a/gcd(a,b)*b;} #define sq(x) ((x)*(x)) #define cube(x) ((x)*(x)*(x)) const ld PI=3.141592653589793238462643383279; const ll INF=5000000000000000000LL; string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string abc = "abcdefghijklmnopqrstuvwxyz"; #define next_p next_permutation template ll LB(vector &v,T a){return lower_bound(v.begin(),v.end(),a)-v.begin();} template ll UB(vector &v,T a){return upper_bound(v.begin(),v.end(),a)-v.begin();} #define ull unsigned long long #define u_map unordered_map #define setting(x) sort(x.begin(),x.end());x.erase(unique(x.begin(),x.end()),x.end()) template using vc = vector; using vcc = vector; template using vv = vc>; using vvc = vv; using vi = vc; using vvi = vv; using vvvi = vv; using vl = vc; using vvl = vv; using vvvl = vv; using vb = vc; using vvb = vv; using vvvb = vv; using vs = vc; using vvs = vv; using pii = pair; using pll = pair; using vpii = vc; using vpll = vc; using vvpii = vv; using vvpll = vv; using vld = vc; using vvld = vv; using vvvld = vv; template ostream &operator<<(ostream &os, const pair &p){ os<<"("< istream &operator>>(istream &is, pair &p){ is>>p.first>>p.second; return is; } template ostream &operator<<(ostream &os, const vector &v){ for(ll i=0;i<(ll)v.size();i++) os< ostream &operator<<(ostream &os, const vector> &v){ for(ll i = 0; i < (ll)v.size(); i++) os< ostream &operator<<(ostream &os, const vector>> &v){ for(int i = 0; i < (int)v.size(); i++){ os<<"i = "< istream &operator>>(istream &is, vector &v){ for(T &in:v) is >> in; return is; } template ostream &operator<<(ostream &os, const map &mp){ for(auto &[key, val]:mp) os ostream &operator<<(ostream &os, const set &st){ auto itr = st.begin(); for(ll i=0; i<(ll)st.size();i++) { os<<*itr<<(i+1!=(ll)st.size()?" ":""); itr++; } return os; } template ostream &operator<<(ostream &os, const multiset &st){ auto itr = st.begin(); for(ll i = 0; i < (ll)st.size(); i++) { os<<*itr<<(i+1!=(ll)st.size()?" ":""); itr++; } return os; } template ostream &operator<<(ostream &os, queue q){ while(q.size()) { os< ostream &operator<<(ostream &os, deque q){ while(q.size()) { os< ostream &operator<<(ostream &os, stack st){ while(st.size()) { os< ostream &operator<<(ostream &os, priority_queue pq){ while(pq.size()) { os< //using namespace boost::multiprecision; //#include //using namespace atcoder; //using mint=modint998244353; /* ostream &operator<<(ostream &os,const mint &i){ os< &v){ for(ll i=0;i<(ll)v.size();i++) os<> n; ll a,b;cin>>a>>b; rep(i,n) { ll p;cin>>p; if(p==1) a--; else if(p==2) b--; else {a--;b--;} if(a==-1||b==-1) {cout<