Problem:
Score : 200 points

Problem Statement

You are given a image with a height of H pixels and a width of W pixels.
Each pixel is represented by a lowercase English letter.
The pixel at the i-th row from the top and j-th column from the left is a_{ij}.

Put a box around this image and output the result. The box should consist of # and have a thickness of 1.

Constraints

1 ≤ H, W ≤ 100

a_{ij} is a lowercase English letter.

Input

Input is given from Standard Input in the following format:

H W
a_{11} ... a_{1W}
:
a_{H1} ... a_{HW}

Output

Print the image surrounded by a box that consists of # and has a thickness of 1.

Sample Input 1

2 3
abc
arc

Sample Output 1

#####
#abc#
#arc#
#####

Sample Input 2

1 1
z

Sample Output 2

###
#z#
###

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include <unistd.h>

void get_nums(int *array, int count)
{
    char c;
    int num;

    c = 0;
    while (c != 10)
    {
        if (read(0, &c, 1) == -1)
            return ;
        if (c != 32)
        {
            num = 0;
            while ('0' <= c && c <= '9')
            {
                num = num * 10 + c - '0';
                if (read(0, &c, 1) == 0)
                {
                    array[count++] = num;
                    return ;                    
                }
            }
            array[count++] = num;
        }
    }  
}

void get_stirngs(char *s, int i)
{
    char c;

    c = 0;
    while (c != 10)
    {
        if (read(0, &c, 1) == -1)
            return ;
        while (31 < c && c < 127)
        {
            s[i++] = c;
            if (read(0, &c, 1) == 0)
            {
                s[i] = 0;
                return ;                    
            }
        }
        s[i] = 0;
    }  
}

void get_ans(int x, int y, int i, int j)
{
    char s[x + 1];
    
    while (++j < y + 2)
    {
        if (0 < j  && j <= y)
            get_stirngs(s, 0);
        i = -1;
        while (++i < x + 2)
        {
            if (0 < j  && j <= y && 0 < i && i <= x)
                write(1, &s[i - 1], 1);
            else
                write(1, "#", 1);
        }
        write(1, "\n", 1);
    }
}

int main(void){
    int num[2];
    
    get_nums(num, 0);
    get_ans(num[1],num[0], -1, -1);
    return (0);
}