
#include<bits/stdc++.h>
using namespace std;
const int maxn =1e6+100;
int vis[maxn],ans[maxn];
int n,m;
int Hash(int v)
{
int k=v%m;
for(int i=0;i<m;i++)
{
int now = (v+i*i)%m;
if(vis[now] == -1||vis[now]==v)
{
vis[now]=v;
return now;
}
now = (v-i*i)%m;
if(vis[now] == -1||vis[now]==v)
{
vis[now]=v;
return now;
}
}
}
int main()
{
while(cin>>n>>m)
{
memset(vis,-1,sizeof(vis));
for(int i=0;i<n;i++)
{
int v;
cin>>v;
ans[i] = Hash(v);
}
for(int i=0;i<n;i++)
{
if(i==n-1)
cout<<ans[i]<<endl;
else
cout<<ans[i]<<" ";
}
}
return 0;
}