#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define lson l, m, rt << 1
#define rson m+1, r, rt << 1 | 1
using namespace std;
const int MAXN = 222222;
int h, w, n;
int MAX[MAXN<<2];
void PushUp(int rt)
{
MAX[rt] = max(MAX[rt<<1], MAX[rt<<1|1]);
}
void Build(int l, int r, int rt)
{
MAX[rt] = w;
if(l == r)
return;
int m = (l+r)>>1;
Build(lson);
Build(rson);
}
int Query(int x, int l, int r, int rt)
{
if(l == r)
{
MAX[rt] -= x;
return l;
}
int m = (l + r) >> 1;
int ret = (MAX[rt<<1] >= x) ? Query(x, lson) : Query(x, rson);
PushUp( rt );
return ret;
}
int main()
{
int x;
while(~scanf("%d%d%d", &h, &w, &n))
{
if(h > n) h = n;
Build(1, h, 1);
while(n--)
{
scanf("%d", &x);
if(MAX[1] < x)
printf("-1\n");
else
printf("%d\n", Query(x, 1, h, 1));
}
}
return 0;
}