Fox Ciel starts to learn programming. The first task is drawing a fox! However, that turns out to be too hard for a beginner, so she decides to draw a snake instead.

A snake is a pattern on a n by m table. Denote c-th cell of r-th row as (r, c). The tail of the snake is located at (1, 1), then it's body extends to (1, m), then goes down 2 rows to (3, m), then goes left to (3, 1) and so on.

Your task is to draw this snake for Fox Ciel: the empty cells should be represented as dot characters ('.') and the snake cells should be filled with number signs ('#').

Consider sample tests in order to understand the snake pattern.

Input

The only line contains two integers: n and m (3 ≤ n, m ≤ 50). 

n is an odd number.

Output

Output n lines. Each line should contain a string consisting of m characters. Do not output spaces.

Examples

Input

3 3


Output

###
..#
###


Input

3 4


Output

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


Input

5 3


Output

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


Input

9 9


Output

#########
........#
#########
#........
#########
........#
#########
#........
#########
import java.awt.Point;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
 
import static java.lang.Math.*;
 
public class _Solution implements Runnable{
       
        final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") != null;
       
        BufferedReader in;
        PrintWriter out;
        StringTokenizer tok = new StringTokenizer("");
       
        void init() throws FileNotFoundException{
                if (ONLINE_JUDGE){
                        in = new BufferedReader(new InputStreamReader(System.in));
                        out = new PrintWriter(System.out);
                }else{
                        in = new BufferedReader(new FileReader("input.txt"));
                        out = new PrintWriter("output.txt");
                }
        }
       
        String readString() throws IOException{
                while(!tok.hasMoreTokens()){
                        try{
                                tok = new StringTokenizer(in.readLine());
                        }catch (Exception e){
                                return null;
                        }
                }
                return tok.nextToken();
        }
       
        int readInt() throws IOException{
                return Integer.parseInt(readString());
        }
       
        long readLong() throws IOException{
                return Long.parseLong(readString());
        }
       
        double readDouble() throws IOException{
                return Double.parseDouble(readString());
        }
       
        public static void main(String[] args){
                new Thread(null, new _Solution(), "", 256 * (1L << 20)).start();
        }
       
        long timeBegin, timeEnd;
 
        void time(){
                timeEnd = System.currentTimeMillis();
                System.err.println("Time = " + (timeEnd - timeBegin));
        }
       
        public void run(){
                try{
                        timeBegin = System.currentTimeMillis();
                        init();
                        solve();
                        out.close();
                        time();
                }catch (Exception e){
                        e.printStackTrace(System.err);
                        System.exit(-1);
                }
        }
       
        void solve() throws IOException{
        	int n = readInt ();
        	int m = readInt();
        	int sum = 0;
        	for (int i = 0; i < n; i++){
    			boolean q = false;
        		for (int j = 0; j < m; j++){
        			if (i%2 != 0){
        				if (sum%2 == 0){
        					if (j != m-1)
        					out.print(".");
        					else out.print("#");
        				}else{
        					if (j != 0)
        					out.print(".");
        					else out.print("#");
        				}
        				q = true;
        			}else out.print("#");
        		}
        		if (q) sum++;
        		out.println();
        	}
        }
}