#include <bits/stdc++.h>
using namespace std;
int x[2000][10], y[2000][10];
double Ab(int x) {
  if (x >= 0) return x;
  return -x;
};
double q(double x) { return x * x; };
double d(int i, int j) {
  double X, Y;
  if (x[i][0] == x[i][1] && y[j][0] == y[j][1]) {
    Y = min(Ab(y[i][0] - y[j][0]), Ab(y[i][1] - y[j][0]));
    if (y[j][0] <= y[i][1] && y[j][0] >= y[i][0]) Y = 0;
    X = min(Ab(x[j][0] - x[i][0]), Ab(x[j][1] - x[i][0]));
    if (x[i][0] <= x[j][1] && x[i][0] >= x[j][0]) X = 0;
  } else if (x[j][0] == x[j][1] && y[i][0] == y[i][1]) {
    Y = min(Ab(y[i][0] - y[j][0]), Ab(y[i][1] - y[j][1]));
    if (y[i][0] <= y[j][1] && y[i][0] >= y[j][0]) Y = 0;
    X = min(Ab(x[j][0] - x[i][0]), Ab(x[j][1] - x[i][1]));
    if (x[j][0] <= x[i][1] && x[j][0] >= x[i][0]) X = 0;
  } else if (x[i][0] == x[i][1]) {
    X = Ab(x[i][0] - x[j][0]);
    Y = min(min(Ab(y[i][1] - y[j][0]), Ab(y[i][1] - y[j][1])),
            min(Ab(y[i][0] - y[j][0]), Ab(y[i][0] - y[j][1])));
    if (y[i][1] <= y[j][1] && y[i][1] >= y[j][0]) Y = 0;
    if (y[i][0] <= y[j][1] && y[i][0] >= y[j][0]) Y = 0;
  } else {
    Y = Ab(y[i][0] - y[j][0]);
    X = min(min(Ab(x[i][1] - x[j][0]), Ab(x[i][1] - x[j][1])),
            min(Ab(x[i][0] - x[j][0]), Ab(x[i][0] - x[j][1])));
    if (x[i][1] <= x[j][1] && x[i][1] >= x[j][0]) X = 0;
    if (x[i][0] <= x[j][1] && x[i][0] >= x[j][0]) X = 0;
  }
  return (sqrt(q(X) + q(Y)));
};
int main() {
  double a, b;
  cin >> a >> b;
  int xk, yk;
  scanf("%d%d%d%d", &x[0][0], &y[0][0], &xk, &yk);
  x[0][1] = x[0][0];
  y[0][1] = y[0][0];
  int n;
  scanf("%d", &n);
  x[n + 1][0] = xk;
  y[n + 1][0] = yk;
  x[n + 1][1] = xk;
  y[n + 1][1] = yk;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d%d%d", &x[i][0], &y[i][0], &x[i][1], &y[i][1]);
    if (y[i][0] > y[i][1]) swap(y[i][0], y[i][1]);
    if (x[i][0] > x[i][1]) swap(x[i][0], x[i][1]);
  }
  queue<pair<int, int> > q;
  q.push(make_pair(0, 0));
  bool was[2000];
  for (int i = 0; i <= n + 1; i++) was[i] = false;
  was[0] = true;
  double ans = -1;
  while (!q.empty()) {
    pair<int, int> A = q.front();
    q.pop();
    int i = A.first;
    int k = A.second;
    if (d(n + 1, i) - a <= 1e-7) {
      double X = d(n + 1, i) + (a + b) * k;
      if (ans == -1)
        ans = X;
      else
        ans = min(ans, X);
    }
    for (int j = 0; j <= n; j++) {
      if (was[j]) continue;
      if (d(i, j) - a > 1e-7) continue;
      q.push(make_pair(j, k + 1));
      was[j] = true;
    }
  }
  cout << fixed << setprecision(10);
  cout << ans << endl;
  return 0;
}
