//2020.12.12
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
int t = 0, k = INT_MIN, p = INT_MIN;
int num;
int cur;
for (int i = 1; i <= n; i++){
cin >> num;
int tK = 0;
for (int j = 0; j < m; j++){
cin >> cur;
tK -= cur;
num += cur;}
if (k < tK)
k = tK, p = i;
t += num;}
cout << t << " " << p << " " << k;
return 0;}
//201909-1
#include <bits/stdc++.h>
using namespace std;
struct tree{
int appleNum, removeNum;
int id;};
bool cmp(tree a, tree b){
if (a.removeNum != b.removeNum)
return a.removeNum > b.removeNum;
else
return a.id < b.id;}int main(){
int N, M;scanf("%d%d", &N, &M);
tree arr[N];
for (int i = 0; i < N; i++)
arr[i].appleNum = 0, arr[i].removeNum = 0;
for (int i = 0; i < N; i++){scanf("%d", &arr[i].appleNum);
arr[i].id = i + 1;
for (int j = 0; j < M; j++){
int operatorNum;scanf("%d", &operatorNum);
if (operatorNum < 0){
arr[i].appleNum += operatorNum;
arr[i].removeNum -= operatorNum;}}}
int totalAppleNum = 0;
for (int i = 0; i < N; i++)
totalAppleNum += arr[i].appleNum;sort(arr, arr + N, cmp);printf("%d %d %d\n", totalAppleNum, arr[0].id, arr[0].removeNum);
return 0;}
//201909-1
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, m;scanf("%d%d", &n, &m);
pair<int, int> p[n];
for (int i = 0; i < n; i++){scanf("%d", &p[i].first);
p[i].second = p[i].first;
for (int j = 0; j < m; j++){
int num;scanf("%d", &num);
p[i].second += num;}}
int num = -1, total = 0, idx;
for (int i = 0; i < n; i++){
total += p[i].second;
if (p[i].first - p[i].second > num)
num = p[i].first - p[i].second, idx = i + 1;}printf("%d %d %d\n", total, idx, num);
return 0;}
//2020.12.12
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
int n;
cin >> n;
int cnt = 0;
vector<bool> v(n);
int T = 0;
for (int i = 0; i < n; i++){
int m;
cin >> m;
int a;
cin >> a;
bool f = true;
for (int j = 0; j < m - 1; j++){
int t;
cin >> t;
if (t > 0){
if (t < a && f)
++cnt, v[i] = true, f = false;
a = t;} else
a += t;}
T += a;}
int e = 0;
for (int i = 0; i < n; i++)
if (v[(i - 1 + n) % n] && v[i] && v[(i + 1) % n])
++e;
cout << T << " " << cnt << " " << e;
return 0;}
//201909-2
#include <bits/stdc++.h>
using namespace std;
struct tree{
int appleNum;
bool flag;//true为掉落
};
int main(){
int N;scanf("%d", &N);
tree obj[N];
for (int i = 0; i < N; i++)
obj[i].appleNum = 0, obj[i].flag = false;
for (int i = 0; i < N; i++){
int n;scanf("%d", &n);
for (int j = 0; j < n; j++){
int operation;scanf("%d", &operation);
if (j == 0)
obj[i].appleNum = operation;
else{
if (operation <= 0)
obj[i].appleNum += operation;
else{if (obj[i].appleNum > operation){
obj[i].flag = true;
obj[i].appleNum = operation;}}}}}
int totalAppleNum = 0, flagCount = 0;
int continueCount = 0;
for (int i = 0; i < N; i++){
totalAppleNum += obj[i].appleNum;
if (obj[i].flag)
flagCount++;
//这里还可以写另外一种写法
//对边界单独写特殊情况
//即i=0和i=N-1
if (obj[(i - 1 + N) % N].flag && obj[i].flag && obj[(i + 1) % N].flag)
continueCount++;}printf("%d %d %d\n", totalAppleNum, flagCount, continueCount);
return 0;}
//201909-2
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;scanf("%d", &n);
vector<pair<int, bool>> v;
int t = 0, d = 0, e = 0;
while (n--){
int m;scanf("%d", &m);
pair<int, bool> p{-1, false};
int op;
while (m--){scanf("%d", &op);
if (op > 0){
if (op < p.first)
p.second = true;
p.first = op;} else
p.first += op;}
t += p.first;
if (p.second) d++;
v.emplace_back(p);}
for (int i = 0; i < v.size(); i++)
if (v[i].second && v[(i + 1) % v.size()].second && v[(i - 1 + v.size()) % v.size()].second)
e++;printf("%d %d %d\n", t, d, e);
return 0;}