#include #define endl '\n' using namespace std; int a[20050]; vector s; int in[20050]; int out[20050]; vector g[20050]; int used[20005]; int cnt=0; int tree[160050]; int dfs(int root) { //cout<r)return 0; if(L<=l&&R>=r)return tree[vr]; int mid=(l+r)/2; int p=query(2*vr,l,mid,L,R); int q=query(2*vr+1,mid+1,r,L,R); //if(s[l]==s[r])return p; return p^q; } void update(int vr, int l, int r, int L, int R, int val) { // cout<r||Rr)return; if(l==r) { if(l==L)tree[vr]=val; return; } else { int mid=(l+r)/2; update(2*vr,l,mid,L,R,val); update(2*vr+1,mid+1,r,L,R,val); tree[vr]=tree[2*vr]^tree[2*vr+1]; } } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); freopen("xor.in","r",stdin); freopen("xor.out","w",stdout); int n,q; cin>>n>>q; for(int i=0; i>a[i]; } for(int i=0; i>a>>b; used[b]=1; g[a].push_back(b); } for(int i=1; i<=n; i++) { if(!used[i])dfs(i); } build(1,0,s.size()-1); /*for(int i=0; i>k; if(k==1) { int a,b; cin>>a>>b; update(1,0,s.size()-1,in[a],out[a],b); /*for(int i=1; i<8*n; i++) { cout<>a; int p=tree[1]; int q=query(1,0,s.size()-1,in[a]+1,out[a]-1); //cout<