public static Set cal2(int n , int m){
        Set[] a = new HashSet[m+1];
        for(int i= 0; i<=n;i++)
            for(int j = m; j >= 0 ;j--){
                a[j] = new HashSet();

            }

        for(int i = 1; i <= n ; i++){    //2

            for(int j = m ; j >=0; j--){   //3

                if(j==i && i >= 1) {
                    List l = new ArrayList();
                    l.add(j);
                    a[j].add(l);
                }
                if(j-i < 0) continue;
                //i 放
                Set tmpM_i = new HashSet();
                addAll(tmpM_i,a[j-i]);
                for(Iterator it = tmpM_i.iterator();it.hasNext();){
                    List l = (List) it.next();
                    l.add(i);
                }
                addAll(a[j],tmpM_i);
            }
        }

        return a[m];
    }