1 | #include<bits/stdc++.h> |
2 | using namespace std; |
3 | const int MAXN=20; |
4 | const int F=100010; |
5 | int N,M; |
6 | int a[MAXN][F]; |
7 | int top=1; |
8 | void num(int x,int last_num) |
9 | { |
10 | if(x>N) |
11 | { |
12 | top++; |
13 | return; |
14 | } |
15 | int minn=last_num+10; |
16 | for(int i=minn;i<=M-(N-x)*10;i++) |
17 | { |
18 | a[x][top]=i; |
19 | num(x+1,i); |
20 | } |
21 | } |
22 | int main() |
23 | { |
24 | scanf("%d%d",&N,&M); |
25 | for(int i=1;i<=M-N*10+10;i++) |
26 | { |
27 | a[1][top]=i; |
28 | num(2,i); |
29 | } |
30 | printf("%d\n",top-1); |
31 | int last_i[20]; |
32 | for(int i=1;i<top;i++) |
33 | { |
34 | for(int j=1;j<=N;j++) |
35 | { |
36 | if(a[j][i]!=0) |
37 | { |
38 | printf("%d ",a[j][i]); |
39 | last_i[j]=i; |
40 | } |
41 | else |
42 | { |
43 | printf("%d ",a[j][last_i[j]]); |
44 | } |
45 | } |
46 | printf("\n"); |
47 | } |
48 | return 0; |
49 | } |