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
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Vector;

public class A {
   public static final boolean DEBUG = false;
   String filename = "";
   Scanner sc;
   PrintWriter pw;

   public void debug(Object o) {
      if (DEBUG) {
         int ln = Thread.currentThread().getStackTrace()[2].getLineNumber();
         String fn = Thread.currentThread().getStackTrace()[2].getFileName();
         System.out.println("(" + fn + ":" + ln + "): " + o);
      }
   }

   public void pln(Object o) {
      System.out.println(o);
   }

   boolean canDo(long l, long r, long t, long m, long a, long b) {
      long vl = a + (l-1) * b;
      long vr = a + (r-1) * b;
      long total = (vl + vr) * (r-l+1) / 2;
      return (total <= m * t && vr <= t);
   }
   
   long solve(long l, long t, long m, long a, long b) {
      long minR = l;
      long maxR = l + (int)1e6 + 10;
      
      while (true) {
         long r = (minR + maxR) / 2;
         if (canDo(l, r, t, m, a, b)) {
            minR = r;
         }
         else {
            maxR = r-1;
         }
         if (maxR - minR < 3) break;
      }
      
      for (long i=maxR; i>=minR; i--) {
         if (canDo(l, i, t, m, a, b)) {
            return i;
         }
      }
      return -1;
   }
   
   public void run() throws FileNotFoundException {
      if (filename.isEmpty()) {
         sc = new Scanner(System.in);
         pw = new PrintWriter(System.out);
      } else {
         sc = new Scanner(new File(filename + ".in"));
         pw = new PrintWriter(new File(filename + ".out"));
      }

      long a = sc.nextLong(), b = sc.nextLong(), n = sc.nextLong();
      for (int i=0; i<n; i++) {
         long l = sc.nextLong();
         long t = sc.nextLong();
         long m = sc.nextLong();
         
         long r = solve(l, t, m, a, b);
         pw.println(r);
      }
      pw.close();
   }

   public static void main(String[] args) {
      A t = new A();
      try {
         t.run();
      } catch (FileNotFoundException e) {
         e.printStackTrace();
      }
   }
}