using System.Collections.Generic; using static System.Console; using static System.Linq.Enumerable; var (N, S) = Util.ReadLongs(); List ans = new(); HashSet visited = new(); bool Search(long n, long s) { if (n == 0) return s == 0; if (s < 0) return false; if (!visited.Add(N * s + n)) return false; if (Search(n - 1, s - n)) { ans.Add(n); return true; } return Search(n - 1, s); } if (Search(N, S)) { WriteLine(ans.Count); WriteLine(string.Join(' ', ans)); } else { WriteLine("Impossible"); } static class Util { public static int[] ReadInts() => ReadLine()!.Split().Select(int.Parse).ToArray(); public static long[] ReadLongs() => ReadLine()!.Split().Select(long.Parse).ToArray(); public static void Deconstruct(this T[] v, out T a, out T b) { a = v[0]; b = v[1]; } }