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.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

/*
public class _535C {

}

 */

public class _535C {
	public void solve() throws FileNotFoundException {
		InputStream inputStream = System.in;

		InputHelper inputHelper = new InputHelper(inputStream);

		PrintStream out = System.out;

		//actual solution
		int a = inputHelper.readInteger();
		int b = inputHelper.readInteger();
		
		int n = inputHelper.readInteger();
		
		for(int i = 0; i < n; i++)
		{
			int l = inputHelper.readInteger();
			int t = inputHelper.readInteger();
			int m = inputHelper.readInteger();
			
			if(a + (long)b * (l - 1) > t)
			{
				System.out.println("-1");
				continue;
			}
			
			int low = l;
			int high = (int) Math.ceil((double)(t - a + b) / b);
			
			int ans = -1;
			while(low <= high)
			{
				int mid = low + (high - low) / 2;
				
				if(valid(l, mid, a, b, m) <= t)
				{
					ans = Math.max(ans, mid);
					low = mid + 1;
				}
				else
				{
					high = mid - 1;
				}
			}
			
			System.out.println(ans);
		}

		//end here
	}

	private long valid(int l, int r, int a, int b, int m) {
		long fn = a + (l - 1) * b;
		long ln = a + (r - 1) * b;
		long sum = (((long)r - l + 1) * (fn + ln)) / 2;
		
		return Math.max((long)Math.ceil((double)sum / m), ln);
	}

	public static void main(String[] args) throws FileNotFoundException {
		(new _535C()).solve();
	}

	class InputHelper {
		StringTokenizer tokenizer = null;
		private BufferedReader bufferedReader;

		public InputHelper(InputStream inputStream) {
			InputStreamReader inputStreamReader = new InputStreamReader(
					inputStream);
			bufferedReader = new BufferedReader(inputStreamReader, 16384);
		}

		public String read() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					String line = bufferedReader.readLine();
					if (line == null) {
						return null;
					}
					tokenizer = new StringTokenizer(line);
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			return tokenizer.nextToken();
		}

		public Integer readInteger() {
			return Integer.parseInt(read());
		}

		public Long readLong() {
			return Long.parseLong(read());
		}
	}
}