The city of Fishtopia can be imagined as a grid of 4 rows and an odd number of columns. It has two main villages; the first is located at the top-left cell (1,1), people who stay there love fishing at the Tuna pond at the bottom-right cell (4, n). The second village is located at (4, 1) and its people love the Salmon pond at (1, n).

The mayor of Fishtopia wants to place k hotels in the city, each one occupying one cell. To allow people to enter the city from anywhere, hotels should not be placed on the border cells.

A person can move from one cell to another if those cells are not occupied by hotels and share a side.

Can you help the mayor place the hotels in a way such that there are equal number of shortest paths from each village to its preferred pond?

Input

The first line of input contain two integers, n and k (3 ≤ n ≤ 99, 0 ≤ k ≤ 2×(n-2)), n is odd, the width of the city, and the number of hotels to be placed, respectively.

Output

Print "YES", if it is possible to place all the hotels in a way that satisfies the problem statement, otherwise print "NO".

If it is possible, print an extra 4 lines that describe the city, each line should have n characters, each of which is "#" if that cell has a hotel on it, or "." if not.

Examples

Input

7 2


Output

YES
.......
.#.....
.#.....
.......


Input

5 3


Output

YES
.....
.###.
.....
.....
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
 
 
 
 
 
 

 
public class ne {
	static class MergeSort
	{
	    // Merges two subarrays of arr[].
	    // First subarray is arr[l..m]
	    // Second subarray is arr[m+1..r]
	    static void merge(int arr[], int l, int m, int r)
	    {
	        // Find sizes of two subarrays to be merged
	        int n1 = m - l + 1;
	        int n2 = r - m;
	 
	        /* Create temp arrays */
	        int L[] = new int [n1];
	        int R[] = new int [n2];
	 
	        /*Copy data to temp arrays*/
	        for (int i=0; i<n1; ++i)
	            L[i] = arr[l + i];
	        for (int j=0; j<n2; ++j)
	            R[j] = arr[m + 1+ j];
	 
	 
	        /* Merge the temp arrays */
	 
	        // Initial indexes of first and second subarrays
	        int i = 0, j = 0;
	 
	        // Initial index of merged subarry array
	        int k = l;
	        while (i < n1 && j < n2)
	        {
	            if (L[i] <= R[j])
	            {
	                arr[k] = L[i];
	                i++;
	            }
	            else
	            {
	                arr[k] = R[j];
	                j++;
	            }
	            k++;
	        }
	 
	        /* Copy remaining elements of L[] if any */
	        while (i < n1)
	        {
	            arr[k] = L[i];
	            i++;
	            k++;
	        }
	 
	        /* Copy remaining elements of R[] if any */
	        while (j < n2)
	        {
	            arr[k] = R[j];
	            j++;
	            k++;
	        }
	    }
	 
	    static // Main function that sorts arr[l..r] using
	    // merge()
	    void sort(int arr[], int l, int r)
	    {
	        if (l < r)
	        {
	            // Find the middle point
	            int m = (l+r)/2;
	 
	            // Sort first and second halves
	            sort(arr, l, m);
	            sort(arr , m+1, r);
	 
	            // Merge the sorted halves
	            merge(arr, l, m, r);
	        }
	    }}
	static class Reader1 {
	    static  BufferedReader reader;
	    static StringTokenizer tokenizer;
 
	    /** call this method to initialize reader for InputStream */
	    static void init(InputStream input) {
	        reader = new BufferedReader(
	                     new InputStreamReader(input) );
	        tokenizer = new StringTokenizer("");
	    }
 
	    /** get next word */
	    static String next() throws IOException {
	        while ( ! tokenizer.hasMoreTokens() ) {
	            //TODO add check for eof if necessary
	            tokenizer = new StringTokenizer(
	                   reader.readLine() );
	        }
	        return tokenizer.nextToken();
	    }
 
	    static int nextInt() throws IOException {
	        return Integer.parseInt( next() );
	    }
		
	    static double nextDouble() throws IOException {
	        return Double.parseDouble( next() );
	    }
	    static float nextFloat() throws IOException {
	        return Float.parseFloat( next() );
	    }
	    static long nextLong() throws IOException {
	        return Long.parseLong( next() );
	    }}
 
	
public static void main(String[] args) throws IOException{
	//System.out.println(fib(1000));
 
	Reader1.init(System.in);
	int n= Reader1.nextInt();
	int k= Reader1.nextInt();
	
	
	
	 if((k<n-2)&&k%2==1)
			{System.out.println("YES");
			for(int i =0;i<n;i++)
				System.out.print(".");
			System.out.println();
			System.out.print(".");
			for(int i=0;i<(n+1)/2-k/2-2;i++)
				System.out.print(".");
			for(int i=(n+1)/2-k/2-2;i<(n+1)/2+k/2-1;i++)
				System.out.print("#");
			for(int i=(n+1)/2+k/2+1;i<n+1;i++)
				System.out.print(".");
			System.out.println();
			for(int i =0;i<n;i++)
				System.out.print(".");
			System.out.println();
			for(int i =0;i<n;i++)
				System.out.print(".");
			
		
		
		
		
			}
	else
	{System.out.println("YES");
		for(int i =0;i<n;i++)
			System.out.print(".");
		System.out.println();
		System.out.print(".");
			if(k%2==0)
				{
				
				for(int i=0;i<k/2;i++)
					System.out.print("#");
				for(int i=k/2;i<n-1;i++)
					System.out.print(".");
				
				System.out.println("");
				System.out.print(".");
				for(int i=0;i<k/2;i++)
					System.out.print("#");
				for(int i=k/2;i<n-1;i++)
					System.out.print(".");
				
				
				}
			else
			{	if(k<=n-2)
				{for(int i=0;i<k;i++)
					System.out.print("#");	
				for(int i=k;i<n-1;i++)
					System.out.print(".");	
				System.out.println("");
				for(int i =0;i<n;i++)
					System.out.print(".");}
			else
			{ //System.out.print(". ");
				for(int i=0;i<n-2;i++)
					System.out.print("#");
				System.out.println(".");
				System.out.print(".");
			
				int c=k-n+2;
				for(int i=0;i<c/2;i++)
					System.out.print("#");
				
				for(int i=c/2;i<n-c/2-2;i++)
					System.out.print(".");
				for(int i=n-c/2;i<n;i++)
					System.out.print("#");
				
				System.out.print(".");
				
			}
			}
			
			System.out.println("");
			
			
			for(int i =0;i<n;i++)
				System.out.print(".");
		
}
	
		
	
	
	
	
}}
