#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 1;
double ans, dp[maxn];
struct node {
  int x, y, t;
  double p;
} s[maxn];
bool cmp(const node &a, const node &b) { return a.t < b.t; }
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i)
    scanf("%d%d%d%lf", &s[i].x, &s[i].y, &s[i].t, &s[i].p);
  sort(s + 1, s + 1 + n, cmp);
  dp[1] = ans = s[1].p;
  for (int i = 2; i <= n; ++i) {
    dp[i] = s[i].p;
    for (int j = i - 1; j >= 1; --j) {
      long long t1 = 1ll * (s[i].x - s[j].x) * (s[i].x - s[j].x) +
                     1ll * (s[i].y - s[j].y) * (s[i].y - s[j].y);
      long long t2 = 1ll * (s[i].t - s[j].t) * (s[i].t - s[j].t);
      if (t1 <= t2) dp[i] = max(dp[i], dp[j] + s[i].p);
    }
    ans = max(ans, dp[i]);
  }
  printf("%lf\n", ans);
}
