#include #include using namespace std; using namespace atcoder; using ll=long long; int main() { ll n,m; cin>>n>>m; vector>> edges(6); for(int i=0;i>u>>v>>c; u--;v--;c--; edges[c].push_back(make_pair(u,v)); } unordered_set ok_set; for(int a=0;a dp; auto rec=[&](auto rec,ll s)->double{ if(dp.count(s))return dp[s]; ll v[6]; ll t=s; for(int i=0;i<6;i++){ v[i]=t%n; t/=n; } if(v[0]+v[1]+v[2]+v[3]+v[4]+v[5]==n-1){ if(ok_set.count(s))return 0; else return -1; } double res=0; int cnt=0; t=1; for(int i=0;i<6;i++){ double r=rec(rec,s+t); if(r!=-1){ cnt++; res+=r; } t*=n; } if(cnt==0)return dp[s]=-1; else return dp[s]=(6+res)/cnt; }; cout<