#include using namespace std; #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx2") // 数値型 using ll = long long; using ull = unsigned long long; using ld = long double; using P = pair; using Pll = pair; using Pli = pair; using Pil = pair; // vector関連 using vi = vector; using vvi = vector; using vvvi = vector; using vll = vector; using vvll = vector; using vvvll = vector; template using vc = vector; template using vvc = vector>; template using vvvc = vector>; template using vvvvc = vector>; // priority_queue template using pq = priority_queue; template using pqg = priority_queue, greater>; #define rep(i, n) for(int i = 0; i < (int)(n); i++) #define FOR(i, a, b) for(int i = a; i < (int)(b); i++) #define all(a) (a).begin(),(a).end() #define rall(a) (a).rbegin(),(a).rend() #define MIN(vec) *min_element(vec) #define MAX(vec) *max_element(vec) #define next_perm(vec) next_permutation((vec).begin(), (vec).end()) #define UNIQUE(vec) vec.erase(unique(vec.begin(), vec.end()), vec.end()) #define el "\n" #define Yes cout << "Yes" << el #define No cout << "No" << el #define YES cout << "YES" << el #define NO cout << "NO" << el #define EPS 1e-8 #define Equal(a, b) (fabs((a)-(b)) < EPS) #define dbg(x) cerr << #x << "=" << x << el // 定数 const string abc = "abcdefghijklmnopqrstuvwxyz"; const string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; constexpr int INF = 1001001001; constexpr ll LINF = 1001001001001001001ll; constexpr int DX[] = {1, 0, -1, 0}; constexpr int DY[] = {0, 1, 0, -1}; constexpr int DX8[] = {1, 0, -1, 0, 1, 1, -1, -1}; constexpr int DY8[] = {0, 1, 0, -1, 1, -1, 1, -1}; template ostream &operator<< (ostream &os, pair p) { os << "{" << p.first << "," << p.second << "}"; return os; } template ostream &operator<< (ostream &os, vc &vec) { int sz = vec.size(); rep(i, sz){ os << vec[i] << (i==sz-1?"":" "); } return os; } template istream &operator>> (istream &is, pair &p) { is >> p.first >> p.second; return is; } template istream &operator>> (istream &is, vc &vec) { int sz = vec.size(); rep(i, sz) { is >> vec[i]; } return is; } /// @brief aとbの最大値をaに格納。更新があったかbool値を返す /// @tparam T1 /// @tparam T2 /// @param a /// @param b /// @return bool template inline bool chmax(T1 &a, T2 b){ bool ret = a inline bool chmin(T1 &a, T2 b){ bool ret = a>b; if(ret) {a = b;} return ret; } inline void YesNo(bool flag){ if(flag) {Yes;} else {No;} return; } inline void YESNO(bool flag){ if(flag) {YES;} else {NO;} return; } inline bool outof(ll x, ll xlim){ return (x<0 || x>=xlim); } template inline T sqnorm(T x, T y){ return x*x+y*y; } /// @brief char->int /// @param c /// @return int inline int ctoi(char c){ return c-'0'; } /// @brief xを素因数分解 /// @param x /// @return vector, 素因数の昇順に {p, cnt} vector prime_fact(ll x){ vector ret; for(ll i=2; i*i<=x; i++){ if(x%i == 0){ ret.emplace_back(i, 0); while(x%i == 0){ ret.back().second++; x /= i; } } } if(x != 1) ret.emplace_back(x, 1); return ret; } /// @brief xの約数列挙 /// @param x /// @return vll, 約数の昇順 vll divisor_enum(ll x){ vector ret; for(ll i=1; i*i<=x; i++){ if(x%i == 0){ ret.push_back(x/i); ret.push_back(i); } } sort(all(ret)); UNIQUE(ret); return ret; } /// @brief 繰り返し二乗法。 /// @tparam T /// @param x /// @param k /// @param op /// @param e /// @return template T pow_t(T x, ll k, T (*op)(T, T), T (*e)()){ T ret = e(); while(k){ if(k&1) ret = op(ret, x); x = op(x, x); k >>= 1; } return ret; } ll powll(ll x, ll k){ return pow_t(x, k, [](ll a, ll b) -> ll{return a*b;}, []() -> ll{return 1;}); } inline int pop_cnt(ll x) { return __builtin_popcountll(x); } inline int top_bit(ll x) { return (x==0?-1:63-__builtin_clzll(x));} void main2(); int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); main2(); } #include using namespace std; namespace mylib { static constexpr int BUF_SIZE = 1 << 17; struct FastRead { private: FILE *stream_; array buf_; char *begin_; char *end_; char *ptr_; // reader void skip_space() { while (*ptr_ <= ' ') ++ptr_; } template void read() { if (const auto n = end_ - ptr_; n <= N) { ignore = fread(copy_n(ptr_, n, begin_), 1, BUF_SIZE - n, stream_); ptr_ = begin_; } } // parser template void parse(T &x) { common_type_t x2 = 0; while (true) { uint64_t v; memcpy(&v, ptr_, 8); if ((v -= 0x3030303030303030) & 0x8080808080808080) break; v = (v * 10 + (v >> 8)) & 0xff00ff00ff00ff; v = (v * 100 + (v >> 16)) & 0xffff0000ffff; v = (v * 10000 + (v >> 32)) & 0xffffffff; x2 = 100000000 * x2 + v; ptr_ += 8; } while (true) { uint32_t v; memcpy(&v, ptr_, 4); if ((v -= 0x30303030) & 0x80808080) break; v = (v * 10 + (v >> 8)) & 0xff00ff; v = (v * 100 + (v >> 16)) & 0xffff; x2 = 10000 * x2 + v; ptr_ += 4; break; } while (true) { uint16_t v; memcpy(&v, ptr_, 2); if ((v -= 0x3030) & 0x8080) break; v = (v * 10 + (v >> 8)) & 0xff; x2 = 100 * x2 + v; ptr_ += 2; break; } if (' ' < *ptr_) { x2 *= 10; x2 += *ptr_++ - '0'; } ++ptr_; x = static_cast(x2); } public: // constructor FastRead() : FastRead(stdin) {} explicit FastRead(const filesystem::path& p) : FastRead(fopen(p.c_str(), "r")) {} explicit FastRead(FILE *stream) : stream_(stream), begin_(buf_.data()), end_(begin_ + BUF_SIZE), ptr_(end_) { read(); } ~FastRead() { if (stream_ != stdin) fclose(stream_); } FastRead(const FastRead&) = delete; FastRead &operator = (const FastRead&) = delete; // operators template void operator () (T &x) { skip_space(); read<64>(); parse(x); } template void operator () (T &x) { skip_space(); read<64>(); make_unsigned_t u; if (*ptr_ == '-') { ++ptr_; parse(u); u = -u; } else { parse(u); } x = u; } void operator () (char &x) { skip_space(); read<64>(); x = *ptr_; ++ptr_; } void operator () (string &x) { x = ""; skip_space(); read<64>(); while (*ptr_ > ' ' && *ptr_ != '\0') { x.push_back(*ptr_); ++ptr_; } ++ptr_; } template requires(sizeof...(Ts) != 1) void operator () (Ts&... xs) { ((*this)(xs), ...); } template FastRead& operator >> (T &x) { (*this)(x); return *this; } }; class FastWrite { private: FILE *stream_; array buf_; char *begin_; char *end_; char *ptr_; // preparation template static constexpr int DIGITS = numeric_limits::digits10 + 1; template static constexpr auto POW10 = [] { array> ret; ret[0] = 1; for (int i = 1; i < DIGITS; ++i) { ret[i] = 10 * ret[i - 1]; } return ret; } (); static constexpr auto LUT = [] { array res; char* p = res.data(); char a = '0', b = '0', c = '0', d = '0'; do { *p++ = a, *p++ = b, *p++ = c, *p++ = d; } while (d++ < '9' || (d = '0', c++ < '9' || (c = '0', b++ < '9' || (b = '0', a++ < '9')))); return res; } (); // flush template void flush() { if (end_ - ptr_ <= N) { fwrite(begin_, 1, ptr_ - begin_, stream_); ptr_ = begin_; } } // writer template void le4(uint64_t x) { if constexpr (1 < N) { if (x < POW10[N - 1]) { le4(x); return; } } ptr_ = copy_n(&LUT[x * 4 + (4 - N)], N, ptr_); } template void w4(uint64_t x) { if constexpr (0 < N) { ptr_ = copy_n(&LUT[x / POW10[N - 4] * 4], 4, ptr_); w4(x % POW10[N - 4]); } } template void write(uint64_t x) { if constexpr (N < DIGITS) { if (POW10[N] <= x) { write(x); return; } } le4(x / POW10[N - 4]); w4(x % POW10[N - 4]); } void write(unsigned_integral auto x) { write<4>(x); } void write(__uint128_t x) { if (x < POW10<__uint128_t>[16]) { write(static_cast(x)); } else if (x < POW10<__uint128_t>[32]) { write(static_cast(x / POW10<__uint128_t>[16])); w4<16>(static_cast(x % POW10<__uint128_t>[16])); } else { write(static_cast(x / POW10<__uint128_t>[32])); x %= POW10<__uint128_t>[32]; w4<16>(static_cast(x / POW10<__uint128_t>[16])); w4<16>(static_cast(x % POW10<__uint128_t>[16])); } } public: // constructor FastWrite() : FastWrite(stdout) {} explicit FastWrite(const filesystem::path& p) : FastWrite(fopen(p.c_str(), "w")) {} explicit FastWrite(FILE* stream) : stream_(stream), begin_(buf_.data()), end_(begin_ + BUF_SIZE), ptr_(begin_) {} ~FastWrite() { flush(); if (stream_ != stdout) { fclose(stream_); } } FastWrite(const FastWrite&) = delete; FastWrite& operator = (const FastWrite&) = delete; // operators template void operator () (T x) { flush>(); write(x); } template void operator () (T x) { flush<1 + DIGITS>(); using U = make_unsigned_t; const U u = x; if (x < 0) { *ptr_++ = '-'; write(static_cast(-u)); } else { write(u); } } void operator () (char c) { flush<1>(); *ptr_++ = c; } void operator () (string_view s) { while (!s.empty()) { flush<0>(); const auto n = min(ssize(s), end_ - ptr_); if (n == BUF_SIZE) { fwrite(s.data(), 1, BUF_SIZE, stream_); } else { ptr_ = copy_n(s.data(), n, ptr_); } s.remove_prefix(n); } flush<0>(); } template void ln(T&& x, Ts&&... xs) { (*this)(forward(x)); if constexpr (sizeof...(Ts) == 0) { *ptr_++ = End; } else { *ptr_++ = Sep; ln(forward(xs)...); } } template FastWrite& operator << (T x) { (*this)(x); return *this; } }; mylib::FastRead cin; mylib::FastWrite cout; } // namespace mylib // https://judge.yosupo.jp/submission/296458 using uint = unsigned int; void main2(){ int h, w; mylib::cin >> h >> w; vvc a(h+1, vc(w+1, 0)); rep(i, h) { rep(j, w) mylib::cin >> a[i][j]; } rep(i, h) rep(j, w) a[i][w] += a[i][j]; rep(i, h) a[h][w] += a[i][w]; rep(i, h) { uint x = a[i][w] + a[h][w]; mylib::cout << x << el; } return; }