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;
using System.Text;
using System.Threading.Tasks;

namespace ITP1_5_B
{
    class Program
    {
        static void Main(string[] args)
        {
            //縦Hcm、横Wcmの長方形を描く
            //1cm×1cmの正方形を'#'で表す
            //H,Wがともに0の時入力の終了
            //長方形の内側を"．"で表す

            while (true)                                    //以下の処理をbreak条件が与えられるまで繰り返す
            {
                string[] str = Console.ReadLine().Split(' ');
                int H = int.Parse(str[0]);                  //H 長方形の縦
                int W = int.Parse(str[1]);                  //W 長方形の横

                int i1;                                     //以下のfor文にてHに対応して用いる変数
                int i2;                                     //以下のfor文にてWに対応して用いる変数

                if (H == 0 && W == 0)
                {
                    break;                                  //H,Wが0の時、処理の終了
                }

                else
                {
                    for (i1 = 0; i1 < H; i1++)              //縦に以下の処理を何回繰り返すか？
                    {
                        for (i2 = 0; i2 < W; i2++)          //#を書く処理を横に何回繰り返すか？
                        {
                            if (i1 == 0 || i1 == H - 1)     //1行目or最終行の処理
                            {
                                Console.Write("#");         //横にW個の#を表示させる

                            }
                            else　　　　　　　　　　　　　　//1行目or最終行以外の時
                            {
                                if (i2 == 0 || i2 == W - 1)
                                {
                                    Console.Write("#");
                                }

                                else
                                {
                                    Console.Write(".");
                                }
                            }
                        }
                        Console.WriteLine();                //改行する
                    }
                    Console.WriteLine("");
                }
            }
        }
    }
}