#include<iostream>
#include<cstdio>
#include<string.h>
#include<cstring>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#define LOCAL
#define ll long long
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
#define mod 1000000007
using namespace std;
/*
题意:有一个等差数列 从A开始 公差为B 然后n个询问 每个询问给定l,t,m 然后要求如果每次可以最多选择m个数 使这m个数-1
那么在t次操作中可以使l为左端点的最长序列中使所有数为0 输出这个最长序列的右端序号
想法:根据定理max(hl,hl+1,hl+2,....hr) <=t&&(hl + hl+1 + hl+2 + ... + hr)<=t*m;
*/
ll a,b,n;
ll l,t,m;
ll getnum(ll x)
{
return a + (x - 1)*b;
}
ll getsum(ll r)
{
return (getnum(r) + getnum(l))*(r - l + 1)/2;
}
int main()
{
//#ifdef LOCAL
// freopen("date.in","r",stdin);
//freopen("date.out","w",stdout);
//#endif // LOCAL
while(~scanf("%lld%lld%lld",&a,&b,&n))
{
while(n--)
{
scanf("%lld%lld%lld",&l,&t,&m);
if(getnum(l)>t)
{
printf("-1\n");
continue;
}
ll li = l;
ll ri = (t - a)/b + 1;
while(li<=ri)
{
ll mid = (li + ri)>>1;
if(getsum(mid)<=t*m) li = mid + 1;
else
ri = mid - 1;
}
printf("%lld\n",li - 1);
}
}
return 0;
}
#include<cstdio>
#include<string.h>
#include<cstring>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#define LOCAL
#define ll long long
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
#define mod 1000000007
using namespace std;
/*
题意:有一个等差数列 从A开始 公差为B 然后n个询问 每个询问给定l,t,m 然后要求如果每次可以最多选择m个数 使这m个数-1
那么在t次操作中可以使l为左端点的最长序列中使所有数为0 输出这个最长序列的右端序号
想法:根据定理max(hl,hl+1,hl+2,....hr) <=t&&(hl + hl+1 + hl+2 + ... + hr)<=t*m;
*/
ll a,b,n;
ll l,t,m;
ll getnum(ll x)
{
return a + (x - 1)*b;
}
ll getsum(ll r)
{
return (getnum(r) + getnum(l))*(r - l + 1)/2;
}
int main()
{
//#ifdef LOCAL
// freopen("date.in","r",stdin);
//freopen("date.out","w",stdout);
//#endif // LOCAL
while(~scanf("%lld%lld%lld",&a,&b,&n))
{
while(n--)
{
scanf("%lld%lld%lld",&l,&t,&m);
if(getnum(l)>t)
{
printf("-1\n");
continue;
}
ll li = l;
ll ri = (t - a)/b + 1;
while(li<=ri)
{
ll mid = (li + ri)>>1;
if(getsum(mid)<=t*m) li = mid + 1;
else
ri = mid - 1;
}
printf("%lld\n",li - 1);
}
}
return 0;
}