One day Qwerty the Ranger witnessed two transport ships collide with each other. As a result, all contents of their cargo holds scattered around the space. And now Qwerty wants to pick as many lost items as possible to sell them later.

The thing is, both ships had lots of new gravitational grippers, transported to sale. A gripper is a device that can be installed on a spaceship and than draw items in space to itself ("grip") and transport them to the ship's cargo hold. 

Overall the crashed ships lost n gravitational grippers: the i-th gripper is located at a point with coordinates (xi, yi). Each gripper has two features — pi (the power) and ri (the action radius) and can grip any items with mass of no more than pi at distance no more than ri. A gripper itself is an item, too and it has its mass of mi.

Qwerty's ship is located at point (x, y) and has an old magnetic gripper installed, its characteristics are p and r. There are no other grippers in the ship's cargo holds.

Find the largest number of grippers Qwerty can get hold of. As he picks the items, he can arbitrarily install any gripper in the cargo hold of the ship, including the gripper he has just picked. At any moment of time the ship can have only one active gripper installed. We consider all items and the Qwerty's ship immobile when the ranger picks the items, except for when the gripper moves an item — then the item moves to the cargo holds and the ship still remains immobile. We can assume that the ship's cargo holds have enough room for all grippers. Qwerty can use any gripper he finds or the initial gripper an arbitrary number of times.

Input

The first line contains five integers x, y, p, r and n ( - 109 ≤ x, y ≤ 109, 1 ≤ p, r ≤ 109, 1 ≤ n ≤ 250000) — the ship's initial position, the initial gripper's features and the number of grippers that got into the space during the collision.

Next n lines contain the grippers' descriptions: the i-th line contains five integers xi, yi, mi, pi, ri ( - 109 ≤ xi, yi ≤ 109, 1 ≤ mi, pi, ri ≤ 109) — the i-th gripper's coordinates and features.

It is guaranteed that all grippers are located at different points. No gripper is located at the same point with Qwerty's ship.

Output

Print a single number — the maximum number of grippers Qwerty can draw to his ship. You do not need to count the initial old magnet gripper.

Examples

Input

0 0 5 10 5
5 4 7 11 5
-7 1 4 7 8
0 2 13 5 6
2 -3 9 3 4
13 5 1 9 9


Output

3

Note

In the first sample you should get the second gripper, then use the second gripper to get the first one, then use the first gripper to get the fourth one. You cannot get neither the third gripper as it is too heavy, nor the fifth one as it is too far away.
#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long s = 0;
  bool f = 0;
  char ch = ' ';
  while (!isdigit(ch)) {
    f |= (ch == '-');
    ch = getchar();
  }
  while (isdigit(ch)) {
    s = (s << 3) + (s << 1) + (ch ^ 48);
    ch = getchar();
  }
  return (f) ? (-s) : (s);
}
inline void write(long long x) {
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x < 10) {
    putchar(x + '0');
    return;
  }
  write(x / 10);
  putchar((x % 10) + '0');
}
const int N = 250005;
int n, pp[N], jyl = 0, id[N];
long long rr[N];
bool limit[N];
struct node {
  int m, p, r;
  long long dis;
} Fe[N];
inline bool cmpdis(int aa, int bb) { return Fe[aa].dis < Fe[bb].dis; }
inline long long sqr(long long x) { return 1ll * x * x; }
struct segtree {
  int sum;
  set<pair<int, int> > wwx;
} T[N << 2];
inline void build(int x, int l, int r) {
  int i;
  T[x].sum = r - l + 1;
  for (i = l; i <= r; i++) T[x].wwx.insert(pair<int, int>(Fe[id[i]].m, id[i]));
  if (l == r) return;
  int mid = (l + r) >> 1;
  build((x << 1), l, mid);
  build((x << 1 | 1), mid + 1, r);
}
inline void query(int x, int l, int r, long long sr, int sp) {
  if (Fe[id[l]].dis > sr || T[x].sum == 0) return;
  if (Fe[id[r]].dis <= sr) {
    set<pair<int, int> >::iterator it;
    while (T[x].sum && T[x].wwx.begin()->first <= sp) {
      it = T[x].wwx.begin();
      int oo = it->second;
      if (!limit[oo]) {
        limit[oo] = 1;
        jyl++;
        rr[jyl] = 1ll * Fe[oo].r * Fe[oo].r;
        pp[jyl] = Fe[oo].p;
      }
      T[x].wwx.erase(it);
      T[x].sum--;
    }
    return;
  }
  int mid = (l + r) >> 1;
  query((x << 1), l, mid, sr, sp);
  query((x << 1 | 1), mid + 1, r, sr, sp);
}
int main() {
  int i;
  long long x0, y0, x, y;
  x0 = read();
  y0 = read();
  pp[0] = read();
  rr[0] = read();
  rr[0] = sqr(rr[0]);
  n = read();
  for (i = 1; i <= n; i++) {
    x = read(), y = read(), Fe[i].m = read(), Fe[i].p = read(),
    Fe[i].r = read();
    Fe[i].dis = 1ll * (sqr(x - x0) + sqr(y - y0));
    id[i] = i;
  }
  sort(id + 1, id + n + 1, cmpdis);
  build(1, 1, n);
  for (i = 0; jyl <= n && i <= jyl; i++) query(1, 1, n, rr[i], pp[i]);
  write(jyl), putchar('\n');
  return 0;
}
