#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdio>
#include <stdio.h>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <iomanip>
#define pub(n) push_back(n)
#define pob(n) pop_back(n)
#define sf(n) scanf("%d",&n)
#define pf(n) printf("%d\n",n)
#define slf(n) scanf("lld",&n)
#define plf(n) printf("lld\n",&n)
#define rep(i,a,b) for(int i = a; i <= b ; i ++ )
#define pre(i,a,b) for(int i = a ; i >= b ; i --)
#define ll long long
#define PII pair<int,int>
#define inf 0x3f3f3f3f3f3f3fll
#define ull unsigned long long
#define ios ios::sync_with_stdio(false),cin.tie(0)
using namespace std;
const int N = 510,mod=1e9+7;
//determine whether it is a prime number
bool is_prime(int n)
{
if(n<2) return false;
for(int i=2;i<n/i;i++) //O(sqrt(n))
{
if(n%i==0)
return false;
}
return true;
}
void divide(int n) // decompose prime factors
{
rep(i,2,n)
{
if(n%i==0)
{
int s=0;
while(n%i==0)
{
n/=i;
s++;
}
printf("%d %d",i,s);
}
}
}
//optimized divide code
void optimized_divide(int n)
{
rep(i,2,n/i)
{
int s=0;
if(n%i==0)
{
n/=i;
s++;
}
printf("%d %d",i,s);
}
if(n > 1) printf("%d %d\n",n,1);
puts("");
}
int primes[N],cnt;
bool st[N];
//select primes of n numbers
void get_primes1(int n) //olognlogn
{
rep(i,2,n)
{
if(!st[i])
{
primes[cnt++]=n;
for(int j=i+i;j<=n;j+=i)
st[j]=true;
}
}
}
void get_primes2(int n) // 线性筛法
{
rep(i,2,n)
{
if(!st[i]) primes[cnt++]=i;
for(int j=0;primes[j]<=n/i;j++)
{
st[primes[j]*i]=true;
//当prime[j]一定是i的最小质因子
if(i%primes[j]==0) break;
//因此,prime[j]一定是
}
}
}
int main()
{
ios;
}