#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void match(int *a,int*b,int m,int n,int k);
void inc(int *b,int L,int R,int m);
int num = 0;
int main()
{
int m,n,k,L,R;
printf("m,n=");
scanf("%d %d",&m,&n);
printf("k = ");
scanf("%d",&k);
printf("L,R=");
scanf("%d %d",&L,&R);
int *a = (int*)malloc(n*sizeof(int));
int *b = (int*)malloc(m*sizeof(int));
int i=0;
for(i = 0; i<m; i++)
{
b[i] = L;
}
for(i = 0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i = 0; i<pow(R-L+1,m); i++)
{
int j;
/*for(j= 0;j<n;j++){
printf("a = %d ",a[j]);
}
printf("\n"); */
match(a,b,m,n,k);
inc(b,L,R,m);
}
printf("%d\n",num);
}
void match(int *a,int*b,int m,int n,int k)
{
int i,j=0,temp,count=0;
if(n<m)
{
for(i =0; i<n; i++)
{
for(; j<m; j++)
{
//printf("%d,%d\n",a[i],b[j]);
if(a[i] == b[j])
{
count++;
j++;
temp = j;
break;
}
}
if(count == k)
break;
if(j == n && i < m-1)
j = temp;
else if(j == n)
break;
}
}
else
{
for(i =0; i<m; i++)
{
for(; j<n; j++)
{
//printf("%d,%d\n",a[i],b[j]);
if(a[j] == b[i])
{
count++;
j++;
temp = j;
break;
}
}
if(count == k)
break;
if(j == n && i < m-1)
j = temp;
else if(j == n)
break;
}
}
if(count == k)
{
for(i=0; i<m; i++)
{
printf("%d ",b[i]);
}
printf("\n");
num += 1;
}
}
void inc(int *b,int L,int R,int m)
{
static int i = -1;
if(i == -1)
{
i = m - 1;
}
if(b[i] == R)
{
b[i] = L;
i -= 1;
inc(b,L,R,m);
i = m - 1;
}
else b[i] += 1;
}