import sys sys.setrecursionlimit(1<<20) input=sys.stdin.readline MI=lambda:map(int,input().split()) li=lambda:list(MI()) ii=lambda:int(input()) n,k=li() a=li() q=ii() # --- 把点修改转成存在区间 (l,r,v) --- cur_st=[0]*n cur_val=a[:] iv=[] for t in range(q): x,v=li() x-=1 iv.append((cur_st[x],t,cur_val[x])) cur_st[x]=t cur_val[x]=v for i in range(n): iv.append((cur_st[i],q,cur_val[i])) # --- 线段树挂桶 --- seg=[[] for _ in range(4*max(1,q))] def upd(i,l,r,ql,qr,v): if ql<=l and r<=qr: seg[i].append(v);return m=(l+r)//2 if qlm: upd(i*2+1,m,r,ql,qr,v) if q>0: for l,r,v in iv: if lk对答案无贡献,直接跳过 upd(1,0,q,l,r,v) # --- 分治 DFS:在节点吸收整段覆盖的值 --- mask=(1<<(k+1))-1 ans=[0]*q def dfs(i,l,r,bs): for v in seg[i]: bs=(bs|((bs<>k)&1 else 0 return m=(l+r)//2 dfs(i*2,l,m,bs) dfs(i*2+1,m,r,bs) if q>0: dfs(1,0,q,1) # 初始只含和0 sys.stdout.write(''.join('1\n' if x else '0\n' for x in ans))