//後ろから決まる感じ d[1<<14];s[14][14]; n,a,b,c; f(m){ int r=0,t; //引数mはすでに置いた品物 //返り値はまだ置いてない品物を置いた時の最高得点 if(~d[m])return d[m];//すでに来てるなら抜ける for(int i=n;i--;)if(~m&1<t?r:t;//で、結局次に置くべき商品として一番いいのはどれか } return d[m]=r; } main(){ for(scanf("%d%*d",&n);~scanf("%d%d%d",&a,&b,&c);s[a][b]=c); memset(d,-1,4<