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 Scala (judge verdict: Accepted)

/**
  * Created by ui on 2016/02/07.
  */
import java.util.Scanner

object PrintAFrame {


  def inputHW (s:Scanner)= {
    val h = s.nextInt
    val w = s.nextInt
    (h,w)
  }
  def printFrame(x:Int, y:Int): Unit = {
    var s = "#".padTo(x-1, '.')
    s += "#"
    println("".padTo(x,'#'))

    for (i <- 0 until y -2) println(s)
    println("".padTo(x,'#'))
    println
  }
  def run: Unit = {
    val sc: Scanner = new java.util.Scanner(System.in)
    var a = inputHW(sc)
    var h = a._1
    var w = a._2
    while (h != 0 || w != 0) {
      printFrame(w,h)
      a = inputHW(sc)
      h = a._1
      w = a._2
    }
  }
}
/**
  * Created by ui on 2016/02/04.
  */
object Main {
  def main(args: Array[String]): Unit = {
    PrintAFrame.run
  }
}