#include <bits/stdc++.h>
using namespace std;
double a[1024][4];
int aa, bb;
double getTime(int i1, int i2) {
  double ret = 1000000000;
  double x11, y11, x12, y12, x21, y21, x22, y22;
  x11 = a[i1][0];
  y11 = a[i1][1];
  x12 = a[i1][2];
  y12 = a[i1][3];
  x21 = a[i2][0];
  y21 = a[i2][1];
  x22 = a[i2][2];
  y22 = a[i2][3];
  if (x11 != x12) {
    swap(x11, y11);
    swap(x12, y12);
    swap(x21, y21);
    swap(x22, y22);
  }
  ret = min(ret, hypot(x11 - x21, y11 - y21));
  ret = min(ret, hypot(x11 - x22, y11 - y22));
  ret = min(ret, hypot(x12 - x21, y12 - y21));
  ret = min(ret, hypot(x12 - x22, y12 - y22));
  if (x21 != x22) {
    if (y21 >= min(y11, y12) && y21 <= max(y11, y12)) {
      ret = min(ret, abs(x11 - x21));
      ret = min(ret, abs(x11 - x22));
    }
    if (x11 >= min(x21, x22) && x11 <= max(x21, x22)) {
      ret = min(ret, abs(y11 - y21));
      ret = min(ret, abs(y12 - y21));
    }
  }
  if (x21 == x22 && max(y11, y12) >= min(y21, y22) &&
      max(y21, y22) >= min(y11, y12)) {
    ret = min(ret, abs(x11 - x21));
  }
  if (ret <= aa) return ret;
  return -1;
}
int main(void) {
  int n, i;
  double x1, y1, x2, y2;
  cin >> aa >> bb;
  cin >> x1 >> y1 >> x2 >> y2;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> a[i + 1][0] >> a[i + 1][1] >> a[i + 1][2] >> a[i + 1][3];
  }
  a[0][0] = a[0][2] = x1;
  a[0][1] = a[0][3] = y1;
  a[n + 1][0] = a[n + 1][2] = x2;
  a[n + 1][1] = a[n + 1][3] = y2;
  n += 2;
  double mnTime[1024];
  double goOut[1024];
  for (i = 0; i < n; i++) mnTime[i] = 1000000000;
  mnTime[0] = goOut[0] = 0;
  bool vis[1024];
  memset(vis, 0, sizeof(vis));
  priority_queue<pair<double, int> > q;
  q.push(make_pair(0, 0));
  while (!q.empty()) {
    int ind = q.top().second;
    q.pop();
    if (vis[ind]) continue;
    vis[ind] = true;
    for (i = 0; i < n; i++)
      if (!vis[i]) {
        double gtm = getTime(ind, i);
        if (gtm == -1) continue;
        if (goOut[ind] + gtm < mnTime[i]) {
          mnTime[i] = goOut[ind] + gtm;
          goOut[i] = goOut[ind] + (aa + bb);
          q.push(make_pair(-mnTime[i], i));
        }
      }
  }
  if (mnTime[n - 1] == 1000000000)
    cout << -1 << endl;
  else
    printf("%.10lf\n", mnTime[n - 1]);
}
