#include<stdio.h>
#include<string.h>
#define ll long long
const int N=100;
const int mod=1e9+7;
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
ll t,n,m,k,q;
ll a[505]={1,1},b[500];
ll dp[450][450],cnt;
ll c[N][N];
void init()
{
ll i,j;
for(i=2;i<=432;i++)
{
if(a[i])
continue;
b[++cnt]=i;
for(j=i*i;j<=432;j+=i)
a[j]=1;
}
for(i=2;i<=432;i++)
{
for(j=1;b[j]<=i && j<=cnt;j++)
{
ll tmp=i,res=0;
while(tmp)
tmp/=b[j],res+=tmp;
dp[i][b[j]]=res;
}
}
}
int main(){
c[0][0]=1;
for(int i=1;i<=50;i++){
c[i][0]=c[i][i]=1;
for(int j=1;j<i;j++){
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
}
ll n,m;
init();
while(~scanf("%lld%lld",&n,&m)){
ll ans=1;
for(int i=1;b[i]<=n&&i<=cnt;i++){
ll tmp=dp[n][b[i]]-dp[m][b[i]]-dp[n-m][b[i]];
ans*=(tmp+1);
}
printf("%lld %lld\n",c[n][m],ans);
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int vis[5010];
struct node{
long long x,y;
int id;
}a[5100];
int cmp(node x1,node y1){
return x1.x<y1.x;
}
int main(){
int n;
memset(vis,0,sizeof(vis));
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld%lld",&a[i].x,&a[i].y);
a[i].id=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n/2;i++){
vis[i]=1;
vis[n-i+1]=1;
if(a[i].id>a[n-i+1].id)
swap(a[i].id,a[n-i+1].id);
printf("%d\n",a[i].id);
printf("%d\n",a[n-i+1].id);
}
for(int i=1;i<=n;i++){
if(vis[i]==0)
printf("%d\n",a[i].id);
}
}
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
int main(){
long long a,b;
stack<int>s;
while(~scanf("%lld%lld",&a,&b)){
if(a+b==0)
{
printf("0\n");
continue;
}
long long ans=a+b;
int t,ct=0;
while(ans>0){
t=ans%10;
s.push(t);
ct++;
if(ct==3&&ans/10>0){
ct=0;
s.push(11);
}
ans/=10;
}
while(!s.empty()){
if(s.top()==11){
printf(",");
s.pop();
}
else{
printf("%d",s.top());
s.pop();
}
}
printf("\n");
}
}
#include<stdio.h>
#include<string.h>
int main(){
int n,m;
int a[1005];
while(~scanf("%d%d",&n,&m)){
int f=0;
memset(a,0,sizeof(a));
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
if(a[m-1]==0){
printf("%d\n",m);
continue;
}
else{
int t=m-1;
while(t++<n-1){
if(a[t]==0){
f=1;
printf("%d\n",t+1);
break;
}
}
if(f==0){
for(int i=0;i<m-1;i++){
if(a[i]==0){
printf("%d\n",i+1);
break;
}
}
}
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int T;
scanf("%d",&T);
while(T--){
int x,y,z;
int n;
scanf("%d",&n);
int sum1=0,sum2=0,sum3=0;
for(int i=0;i<n;i++){
scanf("%d%d%d",&x,&y,&z);
sum1+=x*z;
sum2+=y*z;
sum3+=z;
}
printf("%.2lf %.2lf\n",(double)sum1/sum3,(double)sum2/sum3);
}
}
#include<cstdio>
int n,m,ans;
void dfs(int a,int b,int c,int d){
if(b>=n+m){
if(a==0)
ans++;
return;
}
if(a<=0)
return;
if(c<n)
dfs(a-1,b+1,c+1,d);
if(d<m)
dfs(a*2,b+1,c,d+1);
}
int main(){
scanf("%d%d",&m,&n);
ans=0;
dfs(2,0,0,0);
printf("%d\n",ans);
}
#include<stdio.h>
int main(){
int n;
while(~scanf("%d",&n)){
for(int i=0;i<=n/2;i++){
printf("%d. %d+%d=\n",i+1,i,n-i);
}
}
}
#include<bits/stdc++.h>
using namespace std;
int N;
int vis[100];
int ans;
int main(){
long long a[105];
a[0]=0;
a[1]=1;
a[2]=1;
a[3]=2;
a[4]=4;
for(int i=5;i<=100;i++)
a[i]=a[i-1]+a[i-3]+1;
while(~scanf("%d",&N)){
printf("%lld\n",a[N]);
}
}
#include<bits/stdc++.h>
using namespace std;
struct node{
long long x2=0;
int id=0;
bool operator <(const node &S)const{
if(x2==S.x2)
return id<S.id;
return x2<S.x2;
}
}a[100005];
int main(){
int n,x,l;
long long m,t;
int cnt;
while(~scanf("%d%lld%d",&n,&m,&x)){
cnt=0,l=1;
for(int i=1;i<=n;i++){
scanf("%lld",&t);
a[i].id=i;
a[i].x2=abs(t-m);
}
sort(a+1,a+1+n);
while(cnt<x){
if(a[l].x2!=0){
long long q=a[l].x2;
while(a[l].x2==q&&cnt<=x){
printf("%d\n",a[l].id);
l++;
cnt++;
}
}
else l++;
}
}
return 0;
}