#include<iostream>
#include<cstdio>
#include<queue>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
using namespace std;
typedef long long ll;
ll a[10005][4],b[10005][4];
ll ans=-111112;
map<ll,int>q;
map<ll,int>qq;
int n,m;
int dfs(int x,int y,ll cnt,int t)
{
if(qq[x*1000000000+t*10+y]!=0&&q[x*1000000000+t*10+y]>=cnt)
return 0;
else
q[x*1000000000+t*10+y]=cnt,qq[x*1000000000+t*10+y]=1;
int yb=y;
if(x==n)
{
//cout<<cnt<<' ';
ans=max(ans,cnt);return 0;
}
for(int i=1;i<=3;i++)
{
yb=y+i-2;
if(yb>=1&&yb<=3)
{
if(t!=0)
{
t--;
dfs(x+1,yb,cnt-a[x+1][yb],t);
t++;
}
else
{
if(a[x+1][yb]==0)
{
t=m;
dfs(x+1,yb,cnt+a[x+1][yb],t);
t=0;
}
else
{
dfs(x+1,yb,cnt+a[x+1][yb],0);
}
}
}
}
}
int main()
{
ios::sync_with_stdio(0);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>n>>m;
q.clear();qq.clear();
for(int i=1; i<=n; i++)
{
for(int j=1; j<=3; j++)
{
cin>>a[i][j];
}
} ans=a[0][2];dfs(0,2,a[0][2],0);
cout<<ans<<endl;
}