#include<bits/stdc++.h>
#define inf 1e9
using namespace std;
const int N=3e3;
const double eps=1e-5;
double S[N],P[N],R[N];
int son[N];
double f[N][N];
int sum,k,n;
vector<int> p[N];
void add(int u,int v)
{
p[u].push_back(v);
}
void dfs(int x)
{
int i;
sum+=p[x].size();
for(i=0;i<p[x].size();i++)
dfs(p[x][i]);
}
void dp(int x)
{
int i,j,l;
for(i=0;i<p[x].size();i++)
{
dp(p[x][i]);
for(j=son[i];j>=0;j--)
{
for(l=1;l<=son[p[x][i]];l++)
{
if(j>l)
{
f[x][j]=max(f[x][j],f[x][j-l]+f[p[x][i]][l]);
}
}
}
}
}
int main()
{
int i,j;
double l=0,r=1e4,mid;
cin>>k>>n;
for(i=1;i<=n;i++)
{
cin>>S[i]>>P[i]>>R[i];
add(R[i],i);
}
for(i=0;i<=n;i++)
{
sum=1;
dfs(i);
son[i]=sum;
}
while(l+eps<=r)
{
mid=(l+r)/2;
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
f[i][j]=-inf;
for(i=1;i<=n;i++)
f[i][1]=P[i]-mid*S[i];
dp(0);
if(f[0][k+1]>=eps) l=mid;
else r=mid;
}
cout<<fixed<<setprecision(3)<<l;
return 0;
}