import std; void main () { int N, M; readln.read(N, M); auto S = new string[](N); foreach (i; 0 .. N) { S[i] = readln.chomp; } auto T = new char[][](N, M); foreach (i; 0 .. N) { T[i] = S[i].dup; } foreach (j; 0 .. M) { int cnt = 0; foreach (i; 0 .. N) { if (T[i][j] == '#') { cnt++; } } foreach (i; 0 .. cnt) { T[i][j] = '#'; } foreach (i; cnt .. N) { T[i][j] = '.'; } } foreach (i; 0 .. N) { int cnt = 0; foreach (j; 0 .. M) { if (T[i][j] == '#') { cnt++; } } foreach (j; 0 .. cnt) { T[i][j] = '#'; } foreach (j; cnt .. M) { T[i][j] = '.'; } } foreach (i; 0 .. N) { writeln(T[i]); } } void read (T...) (string S, ref T args) { import std.conv : to; import std.array : split; auto buf = S.split; foreach (i, ref arg; args) { arg = buf[i].to!(typeof(arg)); } }