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.sql.Array;
import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {
        InputReader in = new InputReader(System.in);
        PrintWriter out = new PrintWriter(System.out);
        TaskB.solve(in, out);
        out.close();
    }

    static class TaskA {
        static public void solve(InputReader in, PrintWriter out) {
            String s = in.nextString();
            int cnt1 = 0, cnt2 = 0;
            for (int i = 0; i < s.length(); i++) {
                if (s.charAt(i) == 'o') cnt1++;
                else cnt2++;
            }
            if (cnt1 == 0 || cnt2 % cnt1 == 0) out.print("YES");
            else out.print("NO");
        }
    }

    static class TaskB {
        static void print(char[][] mat, PrintWriter out) {
            out.println("YES");
            for (int i = 0; i < mat.length; i++) {
                for (int j = 0; j < mat[i].length; j++)
                    out.print(mat[i][j]);
                out.println();
            }
        }

        static public void solve(InputReader in, PrintWriter out) {
            int n = in.nextInt();
            int k = in.nextInt();
            char[][] mat = new char[4][n];
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < n; j++)
                    mat[i][j] = '.';
            for (int i = 1, j = n - 2; i <= j && k > 1; i++, j--) {
                mat[1][i] = mat[1][j] = '#';
                if (i != j) k -= 2;
                else k--;
            }
            for (int i = 1, j = n - 2; i <= j && k > 1; i++, j--) {
                mat[2][i] = mat[2][j] = '#';
                if (i != j) k -= 2;
                else k--;
            }
            if (k == 1) {
                if (mat[1][n / 2] == '.') mat[1][n / 2] = '#';
                else mat[2][n / 2] = '#';
            }
            print(mat, out);
        }
    }

    public static class Pair<T extends Comparable<T>, Y extends Comparable<Y>> implements Comparable<Pair<T, Y>> {
        public T first;
        public Y second;
        Pair() {
            first = null;
            second = null;
        }
        Pair(T first, Y second) {
            this.first = first;
            this.second = second;
        }
        public int compareTo(Pair<T, Y> p) {
            int a = first.compareTo(p.first);
            if (a != 0) return a;
            a = second.compareTo(p.second);
            return a;
        }
    }

    public static class InputReader {
        BufferedReader reader;
        StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream));
            tokenizer = null;
        }

        public String nextString() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try { tokenizer = new StringTokenizer(reader.readLine()); }
                catch (IOException e) { throw new RuntimeException(e); }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(nextString());
        }

        public long nextLong() {
            return Long.parseLong(nextString());
        }

        public double nextDouble() {
            return Double.parseDouble(nextString());
        }
    }
}
