#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define _CRT_SECURE_NO_WARNINGS
int prime[300]={2};
int bsearch1(int low,int high,int target)
{
if(low > high) return -1;
int mid = low + (high - low)/2;
if(num[mid] > target){
return bsearch1(low,mid-1,target);
}
if(num[mid] < target){
return bsearch1(mid+1,high,target);
}
return mid;
}
int max(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
int min(int a,int b)
{
if (a>=b)
return b;
else
return a;
}
int clgs(int year,int month,int day)
{
int y, c, m, d, w;
y = year % 100;
c = year / 100;
m = month;
d = day;
if (m == 1 || m == 2) {
y--;
m += 12;
}
w = y + y / 4 + c / 4 - 2 * c + 13 * (m + 1) / 5 + d - 1;
while (w < 0) w += 7;
w %= 7;
return w;
}
int comp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
void yxddsort(int a[],int n)
{
int i,j,min,index;
for(i=0;i<n-1;i++){
min=a[i],index=i;
for(j=i+1;j<n;j++)
if(a[j]<min)
min=a[j],index=j;
if(index!=i)
a[index]=a[i],a[i]=min;
}
}
void yddxsort(int a[],int n)
{
int i,j,max,index;
for(i=0;i<n-1;i++){
max=a[i],index=i;
for(j=i+1;j<n;j++)
if(a[j]>max)
max=a[j],index=j;
if(index!=i)
a[index]=a[i],a[i]=max;
}
}
int gcd(int a,int b)
{
int r;
if(b==0)
return a;
for (r=a%b;r!=0;r=a%b)
{
a=b;
b=r;
}
return b<0?-b:b;
}
int zxgbs(int a,int b)
{
return a*b/gcd(a,b);
}
void get_prime(int n)
{
int i,j,m=1,is_prime,prime[100000];
for(i=3;i<=n;i+=2){
for(is_prime=1,j=0;pow(j,2)<=i;j++){
if(i%j==0){
is_prime=0;
break;
}
}
if(is_prime){
prime[m++]=i;
}
}
}
int if_prime(int i)
{
int j;
for(j=2;pow(j,2)<=i;j++)
{
if(i%j==0)
return 0;
}
return 1;
}
void print_prime(int n)
{
int i,j,m=1,is_prime;
for(i=3;i<=n;i+=2)
{
for(is_prime=1,j=0;prime[j]*prime[j]<=i;j++)
{
if(i%prime[j]==0)
{
is_prime=0;
break;
}
}
if(is_prime)
{
prime[m++]=i;
printf("%d\n",i);
}
}
}