#include using namespace std; #define all(v) (v).begin(),(v).end() #define pb emplace_back #define rep(i, n) for(int i=0;i<(n);i++) #define foa(e, v) for(auto& e : v) #define dout(a) cout< using pqr = priority_queue, greater>; template inline bool chmax(T1 &a, T2 b) { bool compare = a < b; if(compare) a = b; return compare; } template inline bool chmin(T1 &a, T2 b) { bool compare = a > b; if(compare) a = b; return compare; } template inline T back(std::set &s) { return *s.rbegin(); } template inline T back(std::multiset &s) { return *s.rbegin(); } template inline T pop_back(std::set &s) { auto it = prev(s.end()); T val = *it; s.erase(it); return val; } template inline T pop_back(std::multiset &s) { auto it = prev(s.end()); T val = *it; s.erase(it); return val; } const int dy[8] = {-1, 0, 0, 1, 1, -1, 1, -1}; const int dx[8] = {0, -1, 1, 0, -1, -1, 1, 1}; const ll MOD7 = 1000000007, MOD998 = 998244353, INF = (3LL << 59); const int inf = 1 << 30; const char br = '\n'; template std::vector transpose(const std::vector &v) { int n = v.size(); if(n == 0) return v; int m = v[0].size(); std::vector ret(m); for(int i = 0; i < m; i ++) { ret[i].resize(n); for(int j = 0; j < n; j ++) ret[i][j] = v[j][i]; } return ret; } template std::vector rev_lr(std::vector v) { int n = v.size(); for(int i = 0; i < n; i ++) reverse(v[i].begin(), v[i].end()); return v; } template std::vector rev_ud(std::vector v) { reverse(v.begin(), v.end()); return v; } template std::vector rotate(const std::vector &v, int k) { k %= 4; if(k == 0) return v; if(k < 0) k += 4; if(k == 2) return rev_lr(rev_ud(v)); int n = v.size(); if(n == 0) return v; int m = v[0].size(); std::vector ret(m); if(k == 1) { for(int i = 0; i < m; i ++) { ret[i].resize(n); for(int j = 0; j < n; j ++) ret[i][j] = v[n - j - 1][i]; } } else { for(int i = 0; i < m; i ++) { ret[i].resize(n); for(int j = 0; j < n; j ++) ret[i][j] = v[j][m - i - 1]; } } return ret; } template std::vector shift(std::vector v, int dy, int dx) { int n = v.size(); if(n == 0) return v; int m = v[0].size(); std::vector ret = v; for(int i = 0, ni = dy; i < n; i ++, ni ++) { if(ni >= n) ni = 0; for(int j = 0, nj = dx; j < m; j ++, nj ++) { if(nj >= m) nj = 0; ret[ni][nj] = v[i][j]; } } return Grid(ret); } template std::vector shift_l(std::vector v, int k) { return shift(v, 0, -k); } template std::vector shift_r(std::vector v, int k) { return shift(v, 0, k); } template std::vector shift_u(std::vector v, int k) { return shift(v, -k, 0); } template std::vector shift_d(std::vector v, int k) { return shift(v, k, 0); } vector calc(vector s) { ll h = s.size(); ll w = s[0].size(); vector cnt(h, 0); rep(i, h) rep(j, w) if(s[i][j] == '#') cnt[i] ++; vector ret; rep(i, h) { string le(cnt[i], '#'); string ri(w - cnt[i], '.'); ret.pb(le + ri); } return ret; } void solve() { ll h, w; cin >> h >> w; vector s(h); rep(i, h) cin >> s[i]; s = transpose(s); s = calc(s); s = transpose(s); s = calc(s); foa(e, s) cout << e << endl; } int main() { cin.tie(0); ios::sync_with_stdio(false); int testcase = 1; // cin >> testcase; while(testcase --) solve(); return 0; }