#include using namespace std; using ll = long long; using vll = vector; template using umap = unordered_map; #define rep(i, n) for (int i = 0; i < n;i++) #define rep1(i, n) for (int i = 1; i <= n;i++) #define rrep(i, n) for (int i = n - 1; i >= 0;i--) #define rrep1(i, n) for (int i = n; i >= 1;i--) #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define INF 1LL << 60 #define chmin(a, b) a = min(a, b) #define chmax(a, b) a = max(a, b) struct PrefixSum2d { int h, w; vector> grid; PrefixSum2d(int h, int w) : h(h), w(w), grid(h + 1, vector(w + 1)) {} void init() { for (int i = 1;i <= h;i++) { for (int j = 1;j <= w;j++) { grid[i][j] += grid[i][j - 1]; } } for (int i = 1;i <= h;i++) { for (int j = 1;j <= w;j++) { grid[i][j] += grid[i - 1][j]; } } } // a,b=左上、c,d=右下 ll get(int a, int b, int c, int d) { return grid[c][d] - grid[c][b - 1] - grid[a - 1][d] + grid[a - 1][b - 1]; } }; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int h, w; cin >> h >> w; PrefixSum2d pf(h, w); rep(i, h) { rep(j, w) { cin >> pf.grid[i + 1][j + 1]; } } const ll MOD = 1LL << 32; // cout << MOD << endl; pf.init(); rep1(i, h) { cout << (pf.grid[h][w] % MOD + pf.get(i, 1, i, w) % MOD) % MOD << endl; } }