#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\n");
else
printf("0\n");
}
else
printf("%d\n",a[n]);
}
return 0;
}