"use strict"
const create = () => {
    const input = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
    const res = {
        "list": input, "index": 0, "max": input.length,
        "hasNext": function () { return this.index < this.max },
        "next": function () { if (!this.hasNext()) { throw "ArrayIndexOutOfBoundsException"; } else { return this.list[this.index++]; } }
    };
    return res;
}
const o = create();
const next = () => o.next()
const nextInt = () => parseInt(o.next())
const nextStrArray = () => o.next().split(" ")
const nextIntArray = () => o.next().split(" ").map(el => parseInt(el))
const nextCharArray = () => o.next().split("")
const hasNext = () => o.hasNext()
const myout = (...x) => console.log(...x)
const Main = () => {
    const [H, W] = nextIntArray()
    let a = []
    while (hasNext()) {
        a.push(next().split(""))
    }
    for (let i = 0; i < a.length; i++) {
        let isDot = true
        for (let el of a[i]) {
            if (el === "#") {
                isDot = false
                break
            }
        }
        if (isDot) {
            a[i] = new Array(a[0].length).fill("x")
        }
    }
    for (let j = 0; j < a[0].length; j++) {
        let isDot = true
        for (let i = 0; i < a.length; i++) {
            if (a[i][j] == "#") {
                isDot = false
                break
            }
        }
        if (isDot) {
            for(let i = 0; i<a.length;i++){
                a[i][j] = "x"
            }
        }
    }
    let ans = []
    for(let i = 0; i<a.length;i++){
        let line = []
        for(let j = 0; j<a[0].length;j++){
            if(a[i][j] !== "x") line.push(a[i][j])
        }
        if(line.length != 0)ans.push(line)
    }
    for(let line of ans){
        console.log(line.join(""))
    }

}
Main()
