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

public class Solution2 {

    private void solve() throws IOException {
        int n = in.nextInt();
        int k = in.nextInt();
        if (k % 2 == 0) {
            StringBuilder st = new StringBuilder("YES\n");
            for (int i = 0; i < n; i++) st.append('.'); st.append('\n');
            for (int i = 0; i < 2; i++) {
                int a = k / 2;
                st.append('.');
                for (int j = 0; j < n - 2; j++) {
                    if (a > 0) {
                        st.append('#');
                        a--;
                    }
                    else st.append('.');
                }
                st.append('.');
                st.append('\n');
            }
            for (int i = 0; i < n; i++) st.append('.');
            System.out.println(st);
        }
        else if (k > n - 2) {
            StringBuilder st = new StringBuilder("YES\n");
            for (int i = 0; i < n; i++) st.append('.'); st.append('\n');
            st.append('.');
            for (int i = 0; i < n - 2; i++) st.append('#');
            st.append('.');
            st.append('\n');

            st.append('.');
            st.append('#');
            st.append('.');
            k--;
            k -= (n - 2);
            for (int i = 0; i < n - 5; i++) {
                if (k > 1) {
                    st.append('#');
                    k--;
                }
                else st.append('.');
            }
            st.append('#');
            st.append('.');
            st.append('\n');

            for (int i = 0; i < n; i++) st.append('.');
            System.out.println(st);
        }
        else if (k == n - 2){
            StringBuilder st = new StringBuilder("YES\n");
            for (int i = 0; i < n; i++) st.append('.'); st.append('\n');
            st.append('.');
            for (int i = 0; i < n - 2; i++) {
                if (k > 0) {
                    st.append('#');
                    k--;
                }
                else st.append('.');
            }
            st.append('.');
            st.append('\n');
            for (int i = 0; i < n; i++) st.append('.'); st.append('\n');
            for (int i = 0; i < n; i++) st.append('.');
            System.out.println(st);
        }
        else {
            StringBuilder st = new StringBuilder("YES\n");
            for (int i = 0; i < n; i++) st.append('.'); st.append('\n');


            st.append('.');

            int a = k / 2;
            int p = 0;
            for (int i = 0; i < n - 2; i++) {
                if (a > 0) {
                    st.append('#');
                    a--;
                }
                else if (i < n / 2 - 1) {
                    p++;
                    st.append('.');
                }
                else if (i == n / 2 - 1) {
                    st.append('#');
                }
                else if (i > n / 2 - 1 + p) {
                    st.append('#');
                }
                else {
                    st.append('.');
                }
            }


            st.append('.');
            st.append('\n');



            for (int i = 0; i < n; i++) st.append('.'); st.append('\n');
            for (int i = 0; i < n; i++) st.append('.');
            System.out.println(st);
        }
    }


    private PrintWriter out;
    private MyScanner in;

    private void run() throws IOException {
        in = new MyScanner();
        out = new PrintWriter(System.out);
        solve();
        in.close();
        out.close();
    }

    private class MyScanner {
        private BufferedReader br;
        private StringTokenizer st;

        public MyScanner() throws IOException {
            this.br = new BufferedReader(new InputStreamReader(System.in));
        }

        public MyScanner(String fileTitle) throws IOException {
            this.br = new BufferedReader(new FileReader(fileTitle));
        }

        public String nextLine() throws IOException {
            String s = br.readLine();
            return s == null ? "-1" : s;
        }

        public String next() throws IOException {
            while (st == null || !st.hasMoreTokens()) {
                String s = br.readLine();
                if (s == null) {
                    return "-1";
                }
                st = new StringTokenizer(s);
            }
            return st.nextToken();
        }

        public Integer nextInt() throws IOException {
            return Integer.parseInt(this.next());
        }

        public Long nextLong() throws IOException {
            return Long.parseLong(this.next());
        }

        public Double nextDouble() throws IOException {
            return Double.parseDouble(this.next());
        }

        public void close() throws IOException {
            this.br.close();
        }
    }

    public static void main(String[] args) throws IOException {
        Locale.setDefault(Locale.US);
        new Solution2().run();
    }
}




