import java.util.*; public class Main { List<StringBuilder> f(int N){ List<StringBuilder> str = new ArrayList<>();//存储穷举的运算符序列 if(N == 1){ str.add(new StringBuilder("+")); str.add(new StringBuilder("-")); str.add(new StringBuilder("g"));//用g代表不插入运算符 return str; } for(StringBuilder i : f(N - 1)){ str.add(new StringBuilder("+").append(i)); str.add(new StringBuilder("-").append(i)); str.add(new StringBuilder("g").append(i)); } return str; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int M = sc.nextInt(); int r = 0; if(N == 1){ if(M == 1) System.out.println(1); else System.out.println(0); System.exit(0); } List<Integer> v = new ArrayList<>(); for(int i = 1; i <= N; ++i) v.add(i); List<StringBuilder> str = new Main().f(N - 1); for(StringBuilder s : str){//计算每一个穷举运算符序列的结果 List<Integer> temp = new ArrayList<>(); temp.add(v.get(0)); int j = 0; for(int i = 0; i < s.length(); ++i){ if(s.charAt(i) == 'g'){//把g相连的数字合成一个数字 temp.set(j, temp.get(j)*10 + v.get(i + 1)); }else{ j++; temp.add(v.get(i + 1)); } } int sum = temp.get(0); for(int i = 0; i < s.length(); ++i){//剔除当前运算符序列中的g符号 if(s.charAt(i) == 'g'){ s.deleteCharAt(i); --i; } } for(int i = 1; i < temp.size(); ++i){//剩下的只有+-符号 if(s.charAt(i - 1) == '+') sum += temp.get(i); else sum -= temp.get(i); } if(sum == M) r++; } System.out.println(r); } }