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: Wrong Answer)

#include <vector>
#include <algorithm>
#include <iostream>
#include <chrono>
#include<bitset>
#include<deque>
#include <map>
#define vint vector<int>
#define vint2 vector<vint>
#define vchar vector<char>
#define vchar2 vector<vchar> 
#define vchar3 vector<vchar2> 
#define pr pair<int,int>
#define vpr vector<pr>

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)

using namespace std;


int main(){
	int H, W;
	cin >> H >> W;

	REP(j, W+2)cout << "#"; cout << endl;
	REP(i, H){
		cout << "#";
		REP(j, W){ char c; cin >> c; cout << c; } cout << endl;
		cout << "#"; cout << endl;

	}
	REP(j, W+2)cout << "#"; cout << endl;

	return 0;
}

//int mainA(){
//	int a[] = { 1, 3, 5, 7, 8, 10, 12 };
//	int b[] = { 4, 6, 9, 11 };
//	int c[] = { 2 };
//
//	int x, y;
//	cin >> x >> y;
//	int xx = -1, yy = -1;
//
//	REP(i, 7){
//		if (x == a[i])xx = 0;
//		if (y == a[i])yy = 0;
//	}
//	REP(i, 4){
//		if (x == b[i])xx = 1;
//		if (y == b[i])yy = 1;
//	}
//	
//		if (x == 2)xx = 2;
//		if (y == 2)yy = 2;
//		cout << ((xx == yy) ? "Yes" : "No") << endl;
//	
//
//	return 0;
//}