import java.util.ArrayList;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int k = in.nextInt(); // 组内元素个数
        int n = in.nextInt(); // 组内元素和
        List<List<Integer>> result = combinationSum3(k, n);
        if (result.isEmpty()) {
            System.out.println("None");
        } else {
            for (List<Integer> combination : result) {
                for (int num : combination) {
                    System.out.print(num + " ");
                }
                System.out.println();
            }
        }
    }

    public static List<List<Integer>> combinationSum3(int k, int n) {
        List<List<Integer>> res = new ArrayList<>();
        backtrack(res, new ArrayList<>(), k, n, 1);
        return res;
    }

    // 回溯函数
    private static void backtrack(List<List<Integer>> res, List<Integer> tempList,
                                  int k, int remain, int start) {
        // 如果组合的元素数量超过k或剩余值小于0,直接返回
        if (tempList.size() > k || remain < 0) {
            return;
        }
        // 当tempList中正好有k个元素且剩余值为0时,找到符合要求的组合
        if (tempList.size() == k && remain == 0) {
            res.add(new ArrayList<>(tempList));
            return;
        }
        // 从start开始遍历,确保组合升序
        for (int i = start; i <= 9; i++) {
            tempList.add(i);
            backtrack(res, tempList, k, remain - i, i + 1);
            tempList.remove(tempList.size() - 1); // 回溯
        }
    }
}