fn main() { let mut nk = String::new(); std::io::stdin().read_line(&mut nk).ok(); let nk: Vec = nk.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nk[0]; let k = nk[1]; let minval = (n as f64).sqrt().ceil() as usize; let limit = (n / k + if n % k > 0 { 1 } else { 0 }).max(minval); println!("{}", limit); let mut result = vec![vec!["."; limit]; limit]; let mut cnt = 0usize; for i in 0..limit { for j in 0..k.min(limit) { result[i][(i+j)%limit] = "#"; cnt += 1; if cnt == n { break; } } if cnt == n { break; } } for i in 0..limit { println!("{}", result[i].join("")); } }