Problem:
Combination of Number Sequences

0 から 9 までの整数を使った n 個の数の並び k1, k2, ..., kn を考えます。正の整数 n と s を読み込んで、

k1 + 2 × k2 + 3 × k3 + ... + n × kn = s

となっているような n 個の数の並びが何通りあるかを出力するプログラムを作成してください。ただし、1 つの「n 個の数の並び」には同じ数が 2 回以上現われないものとします。

Input

入力は複数のデータセットからなります。各データセットとして、n (1 ≤ n ≤ 10) と s (0 ≤ s ≤ 10,000)が空白区切りで１行に与えられます。

データセットの数は 100 を超えません。

Output

データセットごとに、n 個の整数の和が s になる組み合わせの個数を１行に出力します。

Sample Input

3 10
3 1

Output for the Sample Input

8
0

Solution in JAVA (judge verdict: Wrong Answer)

import java.util.*;
import java.io.*;

public class Main{
	public static int solve(int n, int s, boolean[] check){
		if( n > 10 ){
			return 0;
		}
		if( s > 285 ){
			return 0;
		}
		int a = s/n;
		if( a > 9 ){
			a = 9;
		}
		if( n == 1 ){
			if( s > 9 || check[s] ){
				return 0;
			} else {
				return 1;
			}
		}
		int count = 0;
		for(int i = a; i >= 0; i--){
			if( check[i] ){
				continue;
			}
			check[i] = true;
			count += solve(n-1,s-i*n,check);
			check[i] = false;
		}
		return count;
	}
	
	public static void main(String[] args){
		Scanner stdIn = null;
		List<Integer> result = new ArrayList<Integer>();
		
		try{
			stdIn = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
			while( stdIn.hasNext() ){
				int n = stdIn.nextInt(), s = stdIn.nextInt();
				int count = 0;
			//	Set<Integer> record = new HashSet<Integer>();
				boolean[] check = new boolean[10];
				result.add(solve(n,s,check));
			}
			for(Integer sum : result){
				System.out.println(sum);
			}
		} finally {
			if( stdIn != null ){
				stdIn.close();
			}
		}
	}
}