#include<cstdio>
#include<algorithm>
#define Open(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);
using namespace std;
const int N=5e6+5;
const int M=105;
const int inf=2e9;
int l,r,p,ans,tot,cnt,prime[M/3],a[N],g[N];
bool check[M],f[N];
void prepare(){
for(int i=2;i<=p;i++){
if(!check[i]) prime[++tot]=i;
for(int j=1;j<=tot&&i*prime[j]<=p;j++){
check[i*prime[j]]=1;
if(!(i%prime[j])) break;
}
}
}
void dfs(int cur,int val){
if(cur>tot){
a[++cnt]=val;
return ;
}
dfs(cur+1,val);
while(1LL*val*prime[cur]<=r){
val*=prime[cur];
dfs(cur+1,val);
}
}
int main(){
Open(calc)
scanf("%d%d%d",&l,&r,&p);
prepare();
dfs(1,1);
sort(a+1,a+cnt+1);
for(int i=2;i<=cnt;i++) g[i]=inf;
f[1]=1;g[1]=0;
for(int i=2,n=a[cnt];i<p;i++){
int k=1;
for(int j=1;a[j]*i<=n;j++){
while(a[k]<a[j]*i) k++;
g[k]=min(g[k],g[j]+1);
f[k]|=g[k]+i<=p;
}
}
for(int i=1;i<=cnt;i++) if(a[i]>=l&&f[i]) ans++;
printf("%d\n",ans);
return 0;
}
#include<cstdio>
#include<cstring>
#define Open(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);
using namespace std;
const int N=1e5+5;
int n,m,p,ans,len1,len2,g[N],fail[N];
int s1[N],s2[N];
int S1[N],S2[N];
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
inline void get_fail(){
int p=0;fail[1]=0;
for(int i=2;i<=len2;i++){
while(p>0&&s2[i]!=s2[p+1]) p=fail[p];
if(s2[i]==s2[p+1]) p++;
fail[i]=p;
}
}
inline void kmp(){
int p=0;
for(int i=1;i<=len1;i++){
while(p>0&&s1[i]!=s2[p+1]) p=fail[p];
if(s1[i]==s2[p+1]) p++;
if(p==len2){
g[++ans]=i-len2+1;
p=fail[p];
}
}
}
void deal(int n,int *S,int *s){
for(int i=1;i<n;i++){
if(S[i+1]>S[i]) s[i]=2;
if(S[i+1]==S[i]) s[i]=1;
if(S[i+1]<S[i]) s[i]=0;
}
}
int main(){
Open(pat);
n=read();m=read();p=read();
len1=n-1;len2=m-1;
if(n<m){puts("0");return 0;}
if(m==1){
printf("%d\n",n);
for(int i=1;i<=n;i++) printf("%d\n",i);
return 0;
}
for(int i=1;i<=n;i++) S1[i]=read();
for(int i=1;i<=m;i++) S2[i]=read();
deal(n,S1,s1);
deal(m,S2,s2);
get_fail();
kmp();
printf("%d\n",ans);
for(int i=1;i<=ans;i++) printf("%d\n",g[i]);
return 0;
}
#include<cstdio>
#define min(a,b) (a<b?a:b)
#define Open(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);
using namespace std;
const int N=3e5+5;
int n,m,t,a[N],f[N];
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int main(){
Open(array);
n=read();m=read();t=read();
for(int i=1;i<=n;i++) a[i]=read();
//first:all f[i]=0
//f[i]:length of lis that val<=i
for(int i=1;i<=min(m,t);i++){
for(int j=1;j<=n;j++){
for(int k=a[j];k<=m;k++){
if(f[k]<f[a[j]-1]+1){
f[k]=f[a[j]-1]+1;
}
else break;
}
}
}
printf("%d\n",f[m]);
return 0;
}