#55153: cpp_answer


yp11451202@yphs.tp.edu.tw (705-38黃鈺潤)


#include <bits/stdc++.h>
using namespace std;

int main() {
    // 優化輸入輸出效率,縮短執行時間
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n, m;
    cin >> n >> m;
    
    int S = 0;
    vector<int> num(n, 0);

    // 第一階段:找每一列的最大值
    for(int i = 0; i < n; i++) {
        int mx = 0;
        for(int j = 0; j < m; j++) {
            int input;
            cin >> input;
            if(input > mx) mx = input;
        }
        num[i] = mx; // 紀錄最大值
        S += mx;     // 累加到總和
    }

    // 第二階段:輸出總和 S
    cout << S << endl;

    // 第三階段:篩選並處理格式化輸出
    int cnt = 0;
    for(int i = 0; i < n; i++) {
        // 檢查總和 S 是否能被該列最大值整除
        if(S % num[i] == 0) {
            // 如果 cnt > 0,代表這不是第一個數字,先輸出空白
            if(cnt > 0) cout << " "; 
            cout << num[i];
            cnt++;
        }
    }

    // 第四階段:如果都沒有符合的數字,輸出 -1
    if(cnt == 0) cout << "-1";
    cout << endl;

    return 0;
}