Karafs is some kind of vegetable in shape of an 1 × h rectangle. Tavaspolis people love Karafs and they use Karafs in almost any kind of food. Tavas, himself, is crazy about Karafs.

<image>

Each Karafs has a positive integer height. Tavas has an infinite 1-based sequence of Karafses. The height of the i-th Karafs is si = A + (i - 1) × B.

For a given m, let's define an m-bite operation as decreasing the height of at most m distinct not eaten Karafses by 1. Karafs is considered as eaten when its height becomes zero.

Now SaDDas asks you n queries. In each query he gives you numbers l, t and m and you should find the largest number r such that l ≤ r and sequence sl, sl + 1, ..., sr can be eaten by performing m-bite no more than t times or print -1 if there is no such number r.

Input

The first line of input contains three integers A, B and n (1 ≤ A, B ≤ 106, 1 ≤ n ≤ 105).

Next n lines contain information about queries. i-th line contains integers l, t, m (1 ≤ l, t, m ≤ 106) for i-th query.

Output

For each query, print its answer in a single line.

Examples

Input

2 1 4
1 5 3
3 3 10
7 10 2
6 4 8


Output

4
-1
8
-1


Input

1 5 2
1 5 10
2 7 4


Output

1
2
/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
public class Ideone
{
    //int r2 = (r-l+1)*(a+((l+r)/2-1)*b);
    static long a;
    static long b;
    static long l;
    static long s[];
    public static long f(long x){
        return ((x-l+1)*(2*a+(l+x-2)*b))/2;
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        Scanner sc = new Scanner(System.in);
        a = Long.parseLong(sc.next());
        b=  Long.parseLong(sc.next());
        int n = Integer.parseInt(sc.next());
        s = new long[1000003];
        for(int i = 1;i<=1000002;i++){
            s[i]=a+((long)i-1)*b;
        }
        for(int i = 0;i<n;i++){
            l = Long.parseLong(sc.next());
        /*  for(int j=(int)l;j<=n;j++){
                System.out.print(f(j) + " " );
            }*/
    //      System.out.println();
            long t = Long.parseLong(sc.next());
            long m= Long.parseLong(sc.next());
            int r1 = 1+(int)((t-a)/b);
        //  int r2 = (r-l+1)*(a+((l+r)/2-1)*b);
            if(a+(l-1)*b>t){
                System.out.println(-1);
            }
            else{
                r1++;
        /*  System.out.println(l + " ------- " + r1);
            for(int j=(int)l;j<(int)r1;j++){
                System.out.print(f((long)j) + " " );
            }
            System.out.println();*/
        /// System.out.println("BEGIN");
                int r = rsearch((int)l,r1,m*t);
            //  System.out.println("END");
                System.out.println(r);
            }
        }
    }
    public static int rsearch(int first, int last,  long key){//returns same thing, noting that first is inclusive, last is exclusive, and a[0]<=key<a[last], taking a[a.length]=infinity
    //  System.out.println(first + " " + last);
        if(last-first==1){
        /*  if(a[first]<=key){
                return first;
            }
            else{
                return first-1;
            }*/
            return first;
        }
        else{
        //  System.out.println("compare " + a[(first+last)/2] + " to " + f(key));
            if(f((first+last)/2)<=key){
                return rsearch((first+last)/2,last,key);
            }
            else{
                return rsearch(first, (first+last)/2,key);
            }
        }
    }
}