#include<stdio.h> #define N 200005 int h,w,n; struct node { int x,y,max; }a[N*3]; int mmax(int e,int f) { return e>f?e:f; } void creattree(int t,int x,int y) { a[t].x=x; a[t].y=y; a[t].max=w; if(x==y) return ; int temp=t*2; int mid=(x+y)/2; creattree(temp,x,mid); creattree(temp+1,mid+1,y); } int find(int t,int k) { if(a[t].x==a[t].y) { a[t].max-=k; return a[t].x; }int ans; int temp=t*2; int mid=(a[t].x+a[t].y)/2; if(a[temp].max>=k) ans=find(temp,k); else ans=find(temp+1,k); a[t].max=mmax(a[temp].max,a[temp+1].max); return ans; } int main() { int k; while(scanf("%d%d%d",&h,&w,&n)!=EOF) { if(h<n)//important creattree(1,1,h);//important else creattree(1,1,n);//important while(n--) { scanf("%d",&k); if(a[1].max<k) printf("-1 "); else printf("%d ",find(1,k)); } } return 0; }