#include <bits/stdc++.h>
//#define f cin
//#define g cout
using namespace std;
ifstream f("a.in");
ofstream g("a.out");
//-----------------------------
///Globale
int n,m,q;
struct
{
int val,last_day_update,upd_nr;
} heap[101][200001];
//-----------------------------
///Functii
void citire();
void rezolvare();
void afisare();
//-----------------------------
int main()
{
citire();
rezolvare();
afisare();
return 0;
}
//-----------------------------
void afisare()
{
}
//-----------------------------
void update(int poz,int val,int last_day_update,int upd_nr)
{
nr[poz]++;
heap[poz][nr[poz]].val = val;
heap[poz][nr[poz]].last_day_update = last_day_update;
heap[poz][nr[poz]].upd_nr = upd_nr;
int p = nr[poz];
while(p > 1 && putere(poz,day - heap[poz][p].last_day_update,heap[poz][p].val) > heap[poz][p / 2].val / putere(poz,day - heap[poz][p / 2].last_day_update,heap[poz][p / 2].val))
{
swap(heap[poz][p],heap[poz][p / 2]);
p /= 2;
}
}
//-----------------------------
void rezolvare()
{
for(day = 1; day <= m; ++day)
{
ma = 0;
for(int i = 1; i <= 100; ++i)
{
while(heap[i][1].upd_nr != upd[i])
sterge(i);
if(nr[i] >= 1)
ma = max(ma,heap[i].val / putere(i,day - heap[i][1].last_day_update,heap[i][1].val));
}
g << ma;
}
}
//-----------------------------
void citire()
{
f >> n >> m >> q;
for(int i = 1; i <= n; ++i)
f >> v[i];
day = 1;
for(int i = 1; i <= n; ++i)
{
f >> d;
update(d,v[i],1,1);
upd[i] = 1;
}
}