#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1e3 + 5;
const double eps = 1e-10;
struct TARGET {
  int x, y, t;
  double p;
} mp[MAX_N];
int n;
double dis[MAX_N][MAX_N];
double dp[MAX_N];
bool MAP_CMP(TARGET a, TARGET b) { return a.t < b.t; }
void input() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
    scanf("%d%d%d%lf", &mp[i].x, &mp[i].y, &mp[i].t, &mp[i].p);
}
int sqr(int x) { return x * x; }
void solve() {
  sort(mp, mp + n, MAP_CMP);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < i; j++)
      dis[i][j] = dis[j][i] = sqr(mp[i].x - mp[j].x) + sqr(mp[i].y - mp[j].y);
  for (int i = 0; i < n; i++) dp[i] = mp[i].p;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < i; j++) {
      if (1ll * (mp[i].t - mp[j].t) * (mp[i].t - mp[j].t) >= dis[i][j])
        dp[i] = max(dp[i], dp[j] + mp[i].p);
    }
  double ans = 0.0;
  for (int i = 0; i < n; i++)
    if (dp[i] > ans) ans = dp[i];
  printf("%.6f\n", ans);
}
int main() {
  input();
  solve();
  return 0;
}
