// 第一次做概率DP,根本不懂。。。看了题解还是不懂。尼马!!!!!!
//只是听人家说什么求概率要正推,求期望要逆推。。。尼马还是不懂!!!!
//于是找了个水题做了一个,特么的还是不懂!!!!
//这是个开始,,,慢慢来
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#include<stdio.h>
#include<string.h>#include<math.h>
#define max 1000+5
#define eps 1e-10
struct node{
double h,r,d;
}map[max][max];
double dp[max][max];
int r,c;
void solve(){
for(int i=r;i>=1;i--){
for(int j=c;j>=1;j--){
if(i==r&&j==c){
continue;
}
if(fabs(1-map[i][j].h)<eps){
continue;
}
double res1=map[i][j].r*dp[i][j+1];
double res2=map[i][j].d*dp[i+1][j];
dp[i][j]=(res1+res2+1)/(1-map[i][j].h);
}
}
}
int main(){
while(~scanf("%d%d",&r,&c)){
memset(map,0,sizeof(map));
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
node& t=map[i][j];
scanf("%lf %lf %lf",&t.h,&t.r,&t.d);
}
}
memset(dp,0,sizeof(dp));
//dp[r][c]=0;
solve();
printf("%.3lf\n",2*dp[1][1]);
}
}