Problem:
Print a Frame

Draw a frame which has a height of H cm and a width of W cm. For example, the following figure shows a frame which has a height of 6 cm and a width of 10 cm.

##########
#........#
#........#
#........#
#........#
##########

Input

The input consists of multiple datasets. Each dataset consists of two integers H and W separated by a single space.

The input ends with two 0 (when both H and W are zero).

Output

For each dataset, print the frame made of '#' and '.'.

Print a blank line after each dataset.

Constraints

3 ≤ H ≤ 300

3 ≤ W ≤ 300

Sample Input

3 4
5 6
3 3
0 0

Sample Output

####
#..#
####

######
#....#
#....#
#....#
######

###
#.#
###

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;

namespace AtCoder
{
	class Program
	{
		static void Main(string[] args)
		{
			var Instance = new Question();
			Instance.Exec();
		}
	}

	public class Question
	{
		public void Exec()
		{
			long h = -1;
			long w = -1;
			List<long[]> hwlist = new List<long[]>();

			while (h != 0 && w != 0) {
				var array = Console.ReadLine().Split(' ').Select(i => long.Parse(i)).ToArray();
				h = array[0];
				w = array[1];
				if (h == 0 && w == 0) {
					break;
				}

				hwlist.Add(new[] { h, w });
			}

			foreach (var item in hwlist) {
				for (int i = 0; i < item[0]; ++i) {
					for (int j = 0; j < item[1]; ++j) {
						if (i == 0 || j == 0 || j == item[1] - 1 || i == item[0] - 1) {
							Console.Write("#");
						} else {
							Console.Write(".");
						}
					}
					Console.WriteLine("");
				}

				Console.WriteLine("");
			}

			Console.ReadKey();
		}
	}
}