#include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N=100010; int a[N]; int tr[N]; int n,m; int l,r; int lowbit(int x) { return x& -x; } void add(int x,int c) { for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=c; } int sum(int x) { int res=0; for(int i=x;i;i-=lowbit(i)) res+=tr[i]; return res; } int main() { while(scanf("%d%d",&n,&m)!=EOF) { memset(tr,0,sizeof tr); for(int i=1;i<=n;i++) scanf("%d",&a[i]); while(m--) { scanf("%d%d",&l,&r); add(l,1); add(r+1,-1); } for(int i=1;i<n;i++) { if(sum(i)%2==1) { if(a[i]==0) printf("1 "); else printf("0 "); } else printf("%d ",a[i]); } if(sum(n)%2==1) { if(a[n]==0) printf("1 "); else printf("0 "); } else printf("%d ",a[n]); } return 0; }