import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{

private static final int BIG_NUM=2000000000;
	public static void main(String[]args){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int H,W;
		String work[]=new String[2];
		
		while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main{

private static final int BIG_NUM=2000000000;
	public static void main(String[]args){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int H,W;
		String work[]=new String[2];
		
		while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	}
} Main private static final int BIG_NUM=2000000000; BIG_NUM 2000000000 public static void main(String[]args){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int H,W;
		String work[]=new String[2];
		
		while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	} main {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int H,W;
		String work[]=new String[2];
		
		while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	} BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) int H H W; W String work[]=new String[2]; work new String[2] 2 while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		} true {
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		} try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			} catch(IOException e){
				e.printStackTrace();
			} IOException e {
				e.printStackTrace();
			} e.printStackTrace() e.printStackTrace e {
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			} work=br.readLine().split("[\\s]+") work br.readLine().split("[\\s]+") br.readLine().split br.readLine() br.readLine br "[\\s]+" if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける. work[0].equals("0") && work[1].equals("0") work[0].equals("0") work[0].equals work[0] work 0 "0" work[1].equals("0") work[1].equals work[1] work 1 "0" {break;} break; H=Integer.parseInt(work[0]) H Integer.parseInt(work[0]) Integer.parseInt Integer work[0] work 0 W=Integer.parseInt(work[1]) W Integer.parseInt(work[1]) Integer.parseInt Integer work[1] work 1 for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				} int i=0; int i=0; i 0 i<H i H i++ i++ i {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				} {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				} for(int j=0; j<W; j++) {
						System.out.printf("#");
					} int j=0; int j=0; j 0 j<W j W j++ j++ j {
						System.out.printf("#");
					} {
						System.out.printf("#");
					} System.out.printf("#") System.out.printf System.out System System.out "#" System.out.printf("%n") System.out.printf System.out System System.out "%n" System.out.printf("%n") System.out.printf System.out System System.out "%n" String[]args args public class Main{

private static final int BIG_NUM=2000000000;
	public static void main(String[]args){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int H,W;
		String work[]=new String[2];
		
		while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	}
} public class Main{

private static final int BIG_NUM=2000000000;
	public static void main(String[]args){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int H,W;
		String work[]=new String[2];
		
		while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{

private static final int BIG_NUM=2000000000;
	public static void main(String[]args){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		
		int H,W;
		String work[]=new String[2];
		
		while(true){
			try{
				work=br.readLine().split("[\\s]+");
				
				if(work[0].equals("0") && work[1].equals("0")){break;}	//両方とも0だったらループを抜ける.
				
				H=Integer.parseInt(work[0]);
				W=Integer.parseInt(work[1]);
				
				//長方形を描画する
				for(int i=0; i<H; i++) {
					for(int j=0; j<W; j++) {
						System.out.printf("#");
					}
					System.out.printf("%n");
				}
				System.out.printf("%n");
				
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	}
}
