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++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>

using Picture_Frame = std::vector<std::vector<char>>;

int main(int argc, char *argv[]) {

	uint32_t height = 0;
	uint32_t width = 0;

	std::cin >> height;
	std::cin >> width;

	Picture_Frame frame;
	frame.resize(height + 2);
	char current;
	int line_count = 0;
	for (int i = 0; i < height + 2; i++) {
		auto &line = frame[i];
		line.resize(width + 2);
		if (i == 0 || i == height + 1) {
			for (int j = 0; j < width + 2; j++) {
				line[j] = '#';
			}
		} else {
			for (int k = 0; k < width + 2; k++) {
				if (k == 0 || k == width + 1) {
					line[k] = '#';
				} else {
					std::cin >> current; 
					line[k] = current;
				}
			}
		}
	}

	for (int l = 0; l < frame.size(); l++) {
		auto &output_line = frame[l]; 	
		for (int m = 0; m < output_line.size(); m++) {
			std::cout << output_line[m];
		}
 		std::cout << std::endl;
	}

	return 0;
}