#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int n,m,ans[N];
struct Function{
int a,b,c;
int mi;
int x=2;
void input(){
cin >> a >> b >> c;
mi=a+b+c;
}
}f[N];
struct No{
int v=INT_MAX;
Function* p;
}no[N];
int ge(Function a){
int ans=a.a*a.x*a.x+a.b*a.x+a.c;
return ans;
}
bool cmp(Function a,Function b){
return a.mi<b.mi;
}
bool cmp2(No a,No b){
return a.v<b.v;
}
int main(){
cin >> n >> m;
for(int i=1;i<=n;i++) f[i].input();
sort(f+1,f+n+1,cmp);
for(int i=1;i<=n;i++) no[i].p=&f[i],no[i].v=ge(f[i]);
ans[1]=f[1].mi;
int cnt=2;
no[1].v=ge(f[1]);
for(int i=2;i<=m;i++){
sort(no+1,no+n+1,cmp2);
int j=1;
if(cnt<n){
while(no[j].v<f[cnt].mi){
j++;
ans[i]=no[j].v;
f[cnt].x++;
no[j].v=ge(*no[j].p);
}
if(no[j-1].v==f[cnt].mi){
ans[i]=no[j-1].v;
ans[i+1]=f[cnt].mi;
no[j-1].v=ge(*no[j-1].p);
no[j-2].v=ge(*no[j-2].p);
i++;
cnt++;
}else{
ans[i]=f[cnt].mi;
no[cnt].v=ge(*no[cnt].p);
cnt++;
}
}else if(cnt==n){
ans[i]=f[n].mi;
cnt++;
}else{
ans[i]=no[1].v;
no[1].p->x++;
no[1].v=ge(*no[1].p);
}
}
for(int i=1;i<=m;i++) cout << ans[i] << " ";
}