#include using namespace std; template vector> RLE(vector &A){ if(A.size() == 0) return {}; vector> ret; T back = A.at(0); long long streak = 1; for(int i=1; i> RLE(string &s){ if(s.size() == 0) return {}; vector> ret; char back = s.at(0); long long streak = 1; for(int i=1; i> N >> Q; vector A(N); for(auto &a : A) cin >> a; if(N*Q >= 1001001) return 0; while(Q--){ int t; cin >> t; if(t == 1){ int p,x; cin >> p >> x; p--; A.at(p) = x; } if(t == 2){ int l,r; cin >> l >> r; l--; int low = 0,high = 1001001001; while(high-low > 1){ int mid = (high+low)/2; vector B; for(int i=l; i=mid); auto C = RLE(B); int ok = 0,ng = 0; for(auto [a,len] : C){ if(a == 1) ok += len; else ng += 1; } if(ok > ng) low = mid; else high = mid; } cout << low << "\n"; } } }