#line 2 "library/template/template.hpp" // repo: https://github.com/kumacs/library-cpp // docs: https://kumacs.github.io/library-cpp #include using namespace std; #line 2 "library/template/macro.hpp" #define rep(i, a, b) for (int i = (a); i < (int)(b); i++) #define rrep(i, a, b) for (int i = (int)(b) - 1; i >= (a); i--) #define ALL(v) (v).begin(), (v).end() #define UNIQUE(v) sort(ALL(v)), (v).erase(unique(ALL(v)), (v).end()) #define SZ(v) (int)v.size() #define MIN(v) *min_element(ALL(v)) #define MAX(v) *max_element(ALL(v)) #define LB(v, x) int(lower_bound(ALL(v), (x)) - (v).begin()) #define UB(v, x) int(upper_bound(ALL(v), (x)) - (v).begin()) #define YN(b) cout << ((b) ? "YES" : "NO") << "\n"; #define Yn(b) cout << ((b) ? "Yes" : "No") << "\n"; #define yn(b) cout << ((b) ? "yes" : "no") << "\n"; #line 10 "library/template/template.hpp" #line 2 "library/template/util.hpp" using uint = unsigned int; using ll = long long int; using ull = unsigned long long; using i128 = __int128_t; using u128 = __uint128_t; template using priority_queue_asc = priority_queue, greater>; template S SUM(const vector& a) { return accumulate(ALL(a), S(0)); } template inline bool chmin(T1& a, T2 b) { if (a > b) { a = b; return true; } return false; } template inline bool chmax(T1& a, T2 b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin_opt(optional& a, T2 b) { if (!a || a > b) { a = b; return true; } return false; } template inline bool chmax_opt(optional& a, T2 b) { if (!a || a < b) { a = b; return true; } return false; } template int popcnt(T x) { return __builtin_popcountll(x); } template int topbit(T x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); } template int lowbit(T x) { return (x == 0 ? -1 : __builtin_ctzll(x)); } #line 12 "library/template/template.hpp" #line 2 "library/template/inout.hpp" struct Fast { Fast() { cin.tie(nullptr); ios_base::sync_with_stdio(false); cout << fixed << setprecision(15); } } fast; ostream& operator<<(ostream& os, __uint128_t x) { char buf[40]; size_t k = 0; while (x > 0) buf[k++] = (char)(x % 10 + '0'), x /= 10; if (k == 0) buf[k++] = '0'; while (k) os << buf[--k]; return os; } ostream& operator<<(ostream& os, __int128_t x) { return x < 0 ? (os << '-' << (__uint128_t)(-x)) : (os << (__uint128_t)x); } template ostream& operator<<(ostream& os, const array& a); template istream& operator>>(istream& is, pair& p) { return is >> p.first >> p.second; } template ostream& operator<<(ostream& os, const pair& p) { return os << p.first << " " << p.second; } template istream& operator>>(istream& is, vector& a) { for (auto& v : a) is >> v; return is; } template ostream& operator<<(ostream& os, const vector& a) { for (auto it = a.begin(); it != a.end();) { os << *it; if (++it != a.end()) os << " "; } return os; } template ostream& operator<<(ostream& os, const array& a) { for (auto it = a.begin(); it != a.end();) { os << *it; if (++it != a.end()) os << " "; } return os; } template ostream& operator<<(ostream& os, const set& st) { os << "{"; for (auto it = st.begin(); it != st.end();) { os << *it; if (++it != st.end()) os << ","; } os << "}"; return os; } template ostream& operator<<(ostream& os, const map& mp) { os << "{"; for (auto it = mp.begin(); it != mp.end();) { os << it->first << ":" << it->second; if (++it != mp.end()) os << ","; } os << "}"; return os; } void in() {} template void in(T& t, U&... u) { cin >> t; in(u...); } template void in_zip(int n, T&... t) { assert(n >= 0 && ((size(t) >= static_cast(n)) && ...)); for (int i = 0; i < n; i++) in(t[i]...); } void out() { cout << "\n"; } template void out(const T& t, const U&... u) { cout << t; if (sizeof...(u)) cout << sep; out(u...); } template void out_opt(const optional& opt, const U& fallback, ostream& os = cout) { if (opt.has_value()) os << opt.value(); else os << fallback; os << "\n"; } template void out_opt(const vector>& vec, const U& fallback, ostream& os = cout) { for (auto it = vec.begin(); it != vec.end();) { if ((*it).has_value()) os << (*it).value(); else os << fallback; if (++it != vec.end()) os << " "; } os << "\n"; } namespace IO { template T read(U&&... u) { T t = T(forward(u)...); in(t); return t; } namespace Graph { vector> unweighted(int n, int m, bool directed = false, int offset = 1) { vector> g(n); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; u -= offset, v -= offset; g[u].push_back(v); if (!directed) g[v].push_back(u); } return g; } template vector>> weighted(int n, int m, bool directed = false, int offset = 1) { vector>> g(n); for (int i = 0; i < m; i++) { int u, v; T w; cin >> u >> v >> w; u -= offset, v -= offset; g[u].push_back({v, w}); if (!directed) g[v].push_back({u, w}); } return g; } } // namespace Graph namespace Tree { vector> unweighted(int n, bool directed = false, int offset = 1) { return Graph::unweighted(n, n - 1, directed, offset); } template vector>> weighted(int n, bool directed = false, int offset = 1) { return Graph::weighted(n, n - 1, directed, offset); } vector> rooted(int n, bool to_root = true, bool to_leaf = true, int offset = 1) { vector> g(n); for (int i = 1; i < n; i++) { int p; cin >> p; p -= offset; if (to_root) g[i].push_back(p); if (to_leaf) g[p].push_back(i); } return g; } } // namespace Tree } // namespace IO #line 14 "library/template/template.hpp" #line 2 "library/template/debug.hpp" #ifdef LOCAL #define debug 1 #define show(...) _show(0, #__VA_ARGS__, __VA_ARGS__) #else #define debug 0 #define show(...) true #endif template void _show(int, T) { cerr << '\n'; } template void _show(int i, const T1& a, const T2& b, const T3&... c) { for (; a[i] != ',' && a[i] != '\0'; i++) cerr << a[i]; cerr << ":" << b << " "; _show(i + 1, a, c...); } #line 2 "main.cpp" #line 2 "library/util/fastio.hpp" #line 4 "library/util/fastio.hpp" namespace FastIO { static constexpr unsigned int BUF_SIZE = 1 << 17; struct InStream { private: using IS = InStream; unsigned int p = BUF_SIZE; static char buf[BUF_SIZE]; public: char seekChar() { if (p == BUF_SIZE) { size_t len = fread(buf, 1, BUF_SIZE, stdin); if (len != BUF_SIZE) buf[len] = '\0'; p = 0; } return buf[p]; } void skipSpace() { while (isspace(seekChar())) p++; } template T readUInteger() { T x = 0; skipSpace(); while (true) { char c = seekChar(); if ('9' < c || c < '0') break; x = x * 10 + (c - '0'); p++; } return x; } template T readInteger() { T x = 0; skipSpace(); bool is_negative = seekChar() == '-'; if (is_negative) p++; while (true) { char c = seekChar(); if ('9' < c || c < '0') break; x = x * 10 + (c - '0'); p++; } if (is_negative) x = -x; return x; } char readChar() { skipSpace(); char c = seekChar(); p++; return c; } std::string readString() { std::string s; skipSpace(); while (true) { char c = seekChar(); if (isspace(c) || c == '\0') break; s.push_back(c); p++; } return s; } IS& operator>>(unsigned int& x) { x = readUInteger(); return *this; } IS& operator>>(int& x) { x = readInteger(); return *this; } IS& operator>>(unsigned long long& x) { x = readUInteger(); return *this; } IS& operator>>(long long& x) { x = readInteger(); return *this; } IS& operator>>(char& c) { c = readChar(); return *this; } IS& operator>>(std::string& s) { s = readString(); return *this; } }; struct OutputTable { char num[10000][5]; char tnum[10000][5]; constexpr OutputTable() : num(), tnum() { for (int i = 0; i < 10000; i++) { num[i][0] = '0' + i / 1000 % 10; num[i][1] = '0' + i / 100 % 10; num[i][2] = '0' + i / 10 % 10; num[i][3] = '0' + i / 1 % 10; num[i][4] = '\0'; int x = 0; if (i >= 1000) tnum[i][x++] = '0' + i / 1000 % 10; if (i >= 100) tnum[i][x++] = '0' + i / 100 % 10; if (i >= 10) tnum[i][x++] = '0' + i / 10 % 10; if (i >= 1) tnum[i][x++] = '0' + i / 1 % 10; tnum[i][x++] = '\0'; } } } constexpr table; struct OutStream { private: using OS = OutStream; unsigned int p = 0; static char buf[BUF_SIZE]; static constexpr uint32_t P10(unsigned int d) { return d ? P10(d - 1) * 10 : 1; } static constexpr uint64_t P10L(unsigned int d){ return d ? P10L(d - 1) * 10 : 1; } template static void Split(T& x, U& y, U z) noexcept { x = y / z; y -= x * z; } public: OutStream() { buf[0] = 0; } ~OutStream(){ flush(); } void flush() { fwrite(buf, 1, p, stdout); p = 0; } void write(const char c) { if (p == BUF_SIZE) flush(); buf[p++] = c; } void write(const char* s) { while (*s) write(*(s++)); } void write(const std::string& s) { write(s.c_str()); } void writeU32(uint32_t x) { unsigned int y = 0; if (x >= P10(8)) { Split(y, x, P10(8)); write(table.tnum[y]); Split(y, x, P10(4)); write(table.num[y]); write(table.num[x]); } else if (x >= P10(4)) { Split(y, x, P10(4)); write(table.tnum[y]); write(table.num[x]); } else if (x > 0) { write(table.tnum[x]); } else { write('0'); } } void writeI32(int32_t x) { if (x < 0) { write('-'); writeU32((uint32_t)x); } else write(x); } void writeU64(uint64_t x) { unsigned int y = 0; if (x >= P10L(16)) { Split(y, x, P10L(16)); write(table.tnum[y]); Split(y, x, P10L(12)); write(table.num[y]); Split(y, x, P10L(8)); write(table.num[y]); Split(y, x, P10L(4)); write(table.num[y]); write(table.num[x]); } else if (x >= P10(12)) { Split(y, x, P10L(12)); write(table.tnum[y]); Split(y, x, P10L(8)); write(table.num[y]); Split(y, x, P10L(4)); write(table.num[y]); write(table.num[x]); } else if (x >= P10(8)) { Split(y, x, P10L(8)); write(table.tnum[y]); Split(y, x, P10L(4)); write(table.num[y]); write(table.num[x]); } else if (x >= P10(4)) { Split(y, x, P10L(4)); write(table.tnum[y]); write(table.num[x]); } else if (x > 0) { write(table.tnum[x]); } else { write('0'); } } void writeI64(int64_t x) { if (x < 0) { write('-'); writeU64((uint64_t)x); } else write(x); } OS& operator<<(unsigned int x) { writeU32(x); return *this; } OS& operator<<(int x) { writeI32(x); return *this; } OS& operator<<(unsigned long long x) { writeU64(x); return *this; } OS& operator<<(long long x) { writeI64(x); return *this; } OS& operator<<(const std::string& s) { write(s); return *this; } OS& operator<<(const char* s) { write(s); return *this; } OS& operator<<(char c) { write(c); return *this; } }; char InStream::buf[BUF_SIZE]; char OutStream::buf[BUF_SIZE]; }; // namespace FastIO #line 4 "main.cpp" void solve() { FastIO::InStream is; FastIO::OutStream os; int H, W; is >> H >> W; uint T = 0; vector C(H); rep(i, 0, H) { uint s = 0, x = 0; rep(_, 0, W) { is >> x; s += x; } C[i] = s; T += s; } for (auto& v : C) os << (v + T) << '\n'; } int main() { int T = 1; // in(T); while (T--) solve(); }