#include <iostream>
#include <vector>
using namespace std;
int main()
{
int np, ng;
scanf("%d%d", &np, &ng);
int weight[1010], i;
for(i = 0; i < np; i++)
{
scanf("%d", &weight[i]);
}
vector<int> v[2];
int order;
for(i = 0; i < np; i++)
{
scanf("%d", &order);
v[0].push_back(order);
}
int res[1010], size, group, j, max, maxindex, curindex, curweight;
while(1)
{
size = v[0].size();
if(size == 1)
{
res[v[0][0]] = 1;
break;
}
group = size / ng;
if(size % ng > 0)
{
group++;
}
for(i = 0; i < group; i++)
{
max = -1;
for(j = i * ng; j < (i + 1) * ng && j < size; j++)
{
curindex = v[0][j];
curweight = weight[curindex];
res[curindex] = group + 1;
if(curweight > max)
{
max = curweight;
maxindex = curindex;
}
}
v[1].push_back(maxindex);
}
v[0] = v[1];
v[1].clear();
}
for(i = 0; i < np; i++)
{
if(i > 0)
{
printf(" ");
}
printf("%d", res[i]);
}
printf("\n");
system("pause");
return 0;
}