#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double F(double, double, double, double);
double f(double, double, double, double);
double sum(double, double, double, int, double, double);
const double EPS = 10e-7; //dopuszczalny margines bledu
int main()
{
double A, B, C;
cin >> A >> B >> C;
if (A < 0) //upewnienie sie, ze wspolczynnik A jest dodatni
{
A *= -1;
B *= -1;
C *= -1;
}
int t = 0;
cin >> t;
while (t--)
{
double x1, x2;
double P; //przyblizenie z zadania
cin>> x1 >> x2 >> P;
double S = F(A, B, C, x2) - F(A, B, C, x1); //faktyczne pole
double E = P - S; //blad (zawsze P >= S)
E-=EPS;
//cout <<setprecision(7) << fixed << S <<' ';
int K = (x2 - x1) * (x2 - x1) * (x2 - x1) * A / 6.0 / E;
K = sqrt(K);
K++;
int k = K;
while (k > 0)
{
if (sum(A, B, C, k, x1, x2) - P < EPS && -1*EPS < sum(A, B, C, k, x1, x2) - P)
{
cout<< k <<endl;
break;
}
k--;
}
//cout<< k <<endl;
}
return 0;
}
double f(double A, double B, double C, double x) //funkcja f(x)
{
return A * x * x + B * x + C;
}
double sum(double A, double B, double C, int k, double x1, double x2) //zwraca przyblizenie z uzyciem k trapezow
{
double Dx = x2 - x1;
double suma = 0;
suma += f(A, B, C, x1) + f(A, B, C, x2);
suma /= 2.0;
for (int i = 1; i <= k -1; i++)
{
double temp = x1 + Dx * (1.0 * i) / (1.0 * k);
suma += f(A, B, C, temp);
}
suma *= Dx / (1.0 *k );
return abs(suma);
}
double F(double A, double B, double C, double x) // funkcja pierwotna od f
{
return A * x * x * x / 3.0 + B * x * x / 2.0 + C * x * 1.0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBGKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSk7CmRvdWJsZSBmKGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSk7CmRvdWJsZSBzdW0oZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgaW50LCBkb3VibGUsIGRvdWJsZSk7CgoKY29uc3QgZG91YmxlIEVQUyA9IDEwZS03OyAvL2RvcHVzemN6YWxueSBtYXJnaW5lcyBibGVkdQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgQSwgQiwgQzsKICAgIGNpbiA+PiBBID4+IEIgPj4gQzsKICAgIGlmIChBIDwgMCkgLy91cGV3bmllbmllIHNpZSwgemUgd3Nwb2xjenlubmlrIEEgamVzdCBkb2RhdG5pCiAgICB7CiAgICAgICAgQSAqPSAtMTsKICAgICAgICBCICo9IC0xOwogICAgICAgIEMgKj0gLTE7CiAgICB9CgogICAgaW50IHQgPSAwOwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKQogICAgewoKICAgICAgICBkb3VibGUgeDEsIHgyOwogICAgICAgIGRvdWJsZSBQOyAvL3ByenlibGl6ZW5pZSB6IHphZGFuaWEKICAgICAgICBjaW4+PiB4MSA+PiB4MiA+PiBQOwogICAgICAgIGRvdWJsZSBTID0gRihBLCBCLCBDLCB4MikgLSBGKEEsIEIsIEMsIHgxKTsgLy9mYWt0eWN6bmUgcG9sZQogICAgICAgIGRvdWJsZSBFID0gUCAtIFM7IC8vYmxhZCAoemF3c3plIFAgPj0gUykKICAgICAgICBFLT1FUFM7CgogICAgICAgIC8vY291dCA8PHNldHByZWNpc2lvbig3KSA8PCBmaXhlZCA8PCBTIDw8JyAnOwoKCiAgICAgICAgaW50IEsgPSAoeDIgLSB4MSkgKiAoeDIgLSB4MSkgKiAoeDIgLSB4MSkgKiBBIC8gNi4wIC8gRTsKCiAgICAgICAgSyA9IHNxcnQoSyk7CgoKICAgICAgICBLKys7CiAgICAgICAgaW50IGsgPSBLOwogICAgICAgIHdoaWxlIChrID4gMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChzdW0oQSwgQiwgQywgaywgeDEsIHgyKSAtIFAgPCBFUFMgJiYgLTEqRVBTIDwgc3VtKEEsIEIsIEMsIGssIHgxLCB4MikgLSBQKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0PDwgayA8PGVuZGw7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgay0tOwogICAgICAgIH0KCiAgICAgICAgLy9jb3V0PDwgayA8PGVuZGw7CgoKCgoKICAgIH0KICAgIHJldHVybiAwOwp9CgoKZG91YmxlIGYoZG91YmxlIEEsIGRvdWJsZSBCLCBkb3VibGUgQywgZG91YmxlIHgpIC8vZnVua2NqYSBmKHgpCnsKICAgIHJldHVybiBBICogeCAqIHggKyBCICogeCArIEM7Cgp9Cgpkb3VibGUgc3VtKGRvdWJsZSBBLCBkb3VibGUgQiwgZG91YmxlIEMsIGludCBrLCBkb3VibGUgeDEsIGRvdWJsZSB4MikgLy96d3JhY2EgcHJ6eWJsaXplbmllIHogdXp5Y2llbSBrIHRyYXBlem93CnsKICAgIGRvdWJsZSBEeCA9IHgyIC0geDE7CiAgICBkb3VibGUgc3VtYSA9IDA7CiAgICBzdW1hICs9IGYoQSwgQiwgQywgeDEpICsgZihBLCBCLCBDLCB4Mik7CiAgICBzdW1hIC89IDIuMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGsgLTE7IGkrKykKICAgIHsKICAgICAgICBkb3VibGUgdGVtcCA9IHgxICsgRHggKiAoMS4wICogaSkgLyAoMS4wICogayk7CiAgICAgICAgc3VtYSArPSBmKEEsIEIsIEMsIHRlbXApOwogICAgfQogICAgc3VtYSAgKj0gRHggLyAoMS4wICprICk7CiAgICByZXR1cm4gYWJzKHN1bWEpOwp9CgoKCgpkb3VibGUgRihkb3VibGUgQSwgZG91YmxlIEIsIGRvdWJsZSBDLCBkb3VibGUgeCkgLy8gZnVua2NqYSBwaWVyd290bmEgb2QgZgp7CiAgICByZXR1cm4gQSAqIHggKiB4ICogeCAvIDMuMCArIEIgKiB4ICogeCAvIDIuMCArIEMgKiB4ICogMS4wOwoKfQo=