#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct SegmentTree{
#define L 2*node+1
#define R 2*node+2
#define mid (l+r>>1)
private:
vector<int>seg;ll sz;
int merge(int &a,int b)
{
return a+b;
}
void build(int l,int r,int node,vector<ll>&arr)
{
if(l==r)
{
if(l<arr.size())
{
seg[node]=arr[l];
}
return;
}
build(l,mid,L,arr);
build(mid+1,r,R,arr);
seg[node]=merge(seg[L],seg[R]);
}
void update(int l,int r,int node,int idx)
{
if(l==r)
{
seg[node]^=1;
return;
}
if(idx<=mid)
{
update(l,mid,L,idx);
}
else
{
update(mid+1,r,R,idx);
}
seg[node]=merge(seg[L],seg[R]);
}
int query(int l,int r,int node,int k)
{
if(l==r)
{
return l;
}
int lft=seg[L];
if(lft>=k)
{
return query(l,mid,L,k);
}
return query(mid+1,r,R,k-lft);
}
public:
SegmentTree(vector<ll>&arr)
{
int n=arr.size();
sz=1;
while(sz<n)
{
sz<<=1;
}
seg=vector<int>(sz<<1,0);
build(0,sz-1,0,arr);
}
void update(int idx)
{
update(0,sz-1,0,idx);
}
ll query(int k)
{
return query(0,sz-1,0,k);
}
#undef L
#undef R
#undef mid
};
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,q;cin>>n>>q;
vector<ll>s(n);
for(int i=0;i<n;i++)
{
cin>>s[i];
}
SegmentTree tree(s);
while(q--)
{
int op;cin>>op;
if(op==1)
{
int idx;cin>>idx;
tree.update(idx);
}
else
{
int k;cin>>k;
cout<<tree.query(k+1)<<'\n';
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKc3RydWN0IFNlZ21lbnRUcmVlewojZGVmaW5lIEwgMipub2RlKzEKI2RlZmluZSBSIDIqbm9kZSsyCiNkZWZpbmUgbWlkIChsK3I+PjEpCnByaXZhdGU6CiAgICB2ZWN0b3I8aW50PnNlZztsbCBzejsKICAgIGludCBtZXJnZShpbnQgJmEsaW50IGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGErYjsKICAgIH0KICAgIHZvaWQgYnVpbGQoaW50IGwsaW50IHIsaW50IG5vZGUsdmVjdG9yPGxsPiZhcnIpCiAgICB7CiAgICAgICAgaWYobD09cikKICAgICAgICB7CiAgICAgICAgICAgIGlmKGw8YXJyLnNpemUoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2VnW25vZGVdPWFycltsXTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGJ1aWxkKGwsbWlkLEwsYXJyKTsKICAgICAgICBidWlsZChtaWQrMSxyLFIsYXJyKTsKICAgICAgICBzZWdbbm9kZV09bWVyZ2Uoc2VnW0xdLHNlZ1tSXSk7CiAgICB9CiAgICB2b2lkIHVwZGF0ZShpbnQgbCxpbnQgcixpbnQgbm9kZSxpbnQgaWR4KQogICAgewogICAgICAgIGlmKGw9PXIpCiAgICAgICAgewogICAgICAgICAgICBzZWdbbm9kZV1ePTE7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYoaWR4PD1taWQpCiAgICAgICAgewogICAgICAgICAgICB1cGRhdGUobCxtaWQsTCxpZHgpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICB1cGRhdGUobWlkKzEscixSLGlkeCk7CiAgICAgICAgfQogICAgICAgIHNlZ1tub2RlXT1tZXJnZShzZWdbTF0sc2VnW1JdKTsKICAgIH0KICAgIGludCBxdWVyeShpbnQgbCxpbnQgcixpbnQgbm9kZSxpbnQgaykKICAgIHsKICAgICAgICBpZihsPT1yKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGw7CiAgICAgICAgfQogICAgICAgIGludCBsZnQ9c2VnW0xdOwogICAgICAgIGlmKGxmdD49aykKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBxdWVyeShsLG1pZCxMLGspOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcXVlcnkobWlkKzEscixSLGstbGZ0KTsKICAgIH0KcHVibGljOgogICAgU2VnbWVudFRyZWUodmVjdG9yPGxsPiZhcnIpCiAgICB7CiAgICAgICAgaW50IG49YXJyLnNpemUoKTsKICAgICAgICBzej0xOwogICAgICAgIHdoaWxlKHN6PG4pCiAgICAgICAgewogICAgICAgICAgICBzejw8PTE7CiAgICAgICAgfQogICAgICAgIHNlZz12ZWN0b3I8aW50Pihzejw8MSwwKTsKICAgICAgICBidWlsZCgwLHN6LTEsMCxhcnIpOwogICAgfQogICAgdm9pZCB1cGRhdGUoaW50IGlkeCkKICAgIHsKICAgICAgICB1cGRhdGUoMCxzei0xLDAsaWR4KTsKICAgIH0KICAgIGxsIHF1ZXJ5KGludCBrKQogICAgewogICAgICAgIHJldHVybiBxdWVyeSgwLHN6LTEsMCxrKTsKICAgIH0KI3VuZGVmIEwKI3VuZGVmIFIKI3VuZGVmIG1pZAp9OwpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGludCBuLHE7Y2luPj5uPj5xOwogICAgdmVjdG9yPGxsPnMobik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgewogICAgICAgIGNpbj4+c1tpXTsKICAgIH0KICAgIFNlZ21lbnRUcmVlIHRyZWUocyk7CiAgICB3aGlsZShxLS0pCiAgICB7CiAgICAgICAgaW50IG9wO2Npbj4+b3A7CiAgICAgICAgaWYob3A9PTEpCiAgICAgICAgewogICAgICAgICAgICBpbnQgaWR4O2Npbj4+aWR4OwogICAgICAgICAgICB0cmVlLnVwZGF0ZShpZHgpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpbnQgaztjaW4+Pms7CiAgICAgICAgICAgIGNvdXQ8PHRyZWUucXVlcnkoaysxKTw8J1xuJzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQ==