#include <iostream>
#include <vector>
#include <fstream>
#include <cmath>
#include <limits>
using namespace std;
vector <int> t, v, x;
int mt = 0, l;
double dx(double rt) {
double dx = 0, dt = 0, i = 0;
bool f = true;
while (f) {
if ((i > 0 && dt + t[i] - t[i-1] >= rt) || (dt + t[i] >= rt && !i)){
dx += v[i] * (rt - dt);
f = false;
} else {
dt += (i)?t[i] - t[i-1]:t[0];
dx += x[i++];
}
}
return dx;
}
int check(double m) {
double mn = numeric_limits<double>::max();
if (dx(m) < l) return 0;
for (int i = 0; i < t.size(); i++){
if (t[i] >= m){
double s1 = double(x[i] - dx(t[i]-m));
double s2 = (t[i] + m <= mt)?double(dx(t[i]+m) - x[i]):l;
mn = min(mn, min(s1, s2));
}
}
if (mn < l) return false;
else return true;
}
double srch(double l, double r) {
while (r - l > 0.00001) {
double mid = 1. * (l + r) / 2;
if (check(mid)) r = mid;
else l = mid;
}
return r;
}
int main() {
ifstream cin("trains.in");
ofstream cout("trains.out");
int n, a, b;
double at = 0;
cin >> l >> n;
for (int i = 0; i < n; ++i) {
cin >> a >> b;
t.push_back(a);
v.push_back(b);
x.push_back(t[i] * v[i]);
if (i) {
t[i] += t[i-1];
x[i] += x[i-1];
}
}
mt = t[n-1];
cout << srch(0, double(mt)) << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8bGltaXRzPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3IgPGludD4gdCwgdiwgeDsKaW50IG10ID0gMCwgbDsKCmRvdWJsZSBkeChkb3VibGUgcnQpIHsKCWRvdWJsZSBkeCA9IDAsIGR0ID0gMCwgaSA9IDA7Cglib29sIGYgPSB0cnVlOwogICAgd2hpbGUgKGYpIHsKICAgICAgICBpZiAoKGkgPiAwICYmIGR0ICsgdFtpXSAtIHRbaS0xXSA+PSBydCkgfHwgKGR0ICsgdFtpXSA+PSBydCAmJiAhaSkpewogICAgICAgICAgICBkeCArPSB2W2ldICogKHJ0IC0gZHQpOwogICAgICAgICAgICBmID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAJZHQgKz0gKGkpP3RbaV0gLSB0W2ktMV06dFswXTsKICAgICAgICAJZHggKz0geFtpKytdOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBkeDsKfQoKaW50IGNoZWNrKGRvdWJsZSBtKSB7Cglkb3VibGUgbW4gPSBudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKICAgIGlmIChkeChtKSA8IGwpIHJldHVybiAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0LnNpemUoKTsgaSsrKXsKICAgICAgICBpZiAodFtpXSA+PSBtKXsKICAgICAgICAgICAgZG91YmxlIHMxID0gZG91YmxlKHhbaV0gLSBkeCh0W2ldLW0pKTsKICAgICAgICAgICAgZG91YmxlIHMyID0gKHRbaV0gKyBtIDw9IG10KT9kb3VibGUoZHgodFtpXSttKSAtIHhbaV0pOmw7CiAgICAgICAgICAgIG1uID0gbWluKG1uLCBtaW4oczEsIHMyKSk7CiAgICAgICAgfQogICAgfQogICAgaWYgKG1uIDwgbCkgcmV0dXJuIGZhbHNlOwogICAgZWxzZSByZXR1cm4gdHJ1ZTsKfQoKZG91YmxlIHNyY2goZG91YmxlIGwsIGRvdWJsZSByKSB7Cgl3aGlsZSAociAtIGwgPiAwLjAwMDAxKSB7CgkJZG91YmxlIG1pZCA9IDEuICogKGwgKyByKSAvIDI7CgkJaWYgKGNoZWNrKG1pZCkpIHIgPSBtaWQ7CgkJZWxzZSBsID0gbWlkOwoJfQoJcmV0dXJuIHI7Cn0KCmludCBtYWluKCkgewoJaWZzdHJlYW0gY2luKCJ0cmFpbnMuaW4iKTsKCW9mc3RyZWFtIGNvdXQoInRyYWlucy5vdXQiKTsKCWludCBuLCBhLCBiOwoJZG91YmxlIGF0ID0gMDsKCWNpbiA+PiBsID4+IG47Cglmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewoJCWNpbiA+PiBhID4+IGI7CgkJdC5wdXNoX2JhY2soYSk7CgkJdi5wdXNoX2JhY2soYik7CgkJeC5wdXNoX2JhY2sodFtpXSAqIHZbaV0pOwoJCWlmIChpKSB7CgkJCXRbaV0gKz0gdFtpLTFdOwoJCQl4W2ldICs9IHhbaS0xXTsKCQl9Cgl9CgltdCA9IHRbbi0xXTsKCWNvdXQgPDwgc3JjaCgwLCBkb3VibGUobXQpKSA8PCBlbmRsOwp9