jiahuimbzuai/CoQuIR huggingface dataset:
//  [cpp]
#pragma GCC optimize ("O2")
#pragma GCC target ("avx2")
//#include<bits/stdc++.h>
#include<cstdio>
#include<cstring>

using namespace std;
typedef long long ll;
#define rep(i, n) for(int i = 0; i < (n); i++)
#define rep1(i, n) for(int i = 1; i <= (n); i++)
#define co(x) cout << (x) << "\n"
#define cosp(x) cout << (x) << " "
#define ce(x) cerr << (x) << "\n"
#define cesp(x) cerr << (x) << " "
#define pb push_back
#define mp make_pair
#define chmin(x, y) x = min(x, y)
#define chmax(x, y) x = max(x, y)
#define Would
#define you
#define please

int A[100000];
char kotae[800000], * it = kotae;
const int CM = 1 << 17, CL = 12;
char cn[CM + CL], * ci = cn + CM + CL, * owa = cn + CM, ct;
const ll ma0 = 1157442765409226768;
const ll ma1 = 1085102592571150095;
const ll ma2 = 71777214294589695;
const ll ma3 = 281470681808895;
const ll ma4 = 4294967295;
inline int getint() {
	if (ci - owa > 0) {
		memcpy(cn, owa, CL);
		ci -= CM;
		fread(cn + CL, 1, CM, stdin);
	}
	ll tmp = *(ll*)ci;
	if ((tmp & ma0) ^ ma0) {
		int dig = 68 - __builtin_ctzll((tmp & ma0) ^ ma0);
		tmp = tmp << dig & ma1;
		tmp = tmp * 10 + (tmp >> 8) & ma2;
		tmp = tmp * 100 + (tmp >> 16) & ma3;
		tmp = tmp * 10000 + (tmp >> 32) & ma4;
		ci += (72 - dig >> 3);
	}
	else {
		tmp = tmp & ma1;
		tmp = tmp * 10 + (tmp >> 8) & ma2;
		tmp = tmp * 100 + (tmp >> 16) & ma3;
		tmp = tmp * 10000 + (tmp >> 32) & ma4;
		ci += 8;
		if ((ct = *ci++) >= '0') {
			tmp = tmp * 10 + ct - '0';
			if (*ci++ == '0') {
				tmp = tmp * 10;
				ci++;
			}
		}
	}
	return tmp;
}

int main() {
	//cin.tie(0);
	//ios::sync_with_stdio(false);


	int N, K, kari;
	N = getint();
	K = getint();

	int k = N - K;

	if (k <= K) {
		rep(i, k) A[i] = getint();
		rep(i, K - k) {
			if (ci - owa > 0) {
				memcpy(cn, owa, CL);
				ci -= CM;
				fread(cn + CL, 1, CM, stdin);
			}
			ll tmp = *(ll*)ci;
			if ((tmp & ma0) ^ ma0) {
				ci += (__builtin_ctzll((tmp & ma0) ^ ma0) + 4 >> 3);
			}
			else {
				ci += 8;
				while ((ct = *ci++) >= '0') tmp = tmp * 10 + ct - '0';
			}
		}
		rep(i, k) {
			kari = getint();
			if (kari > A[i]) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
		}
	}
	else if (K == 1) {
		int mae = getint();
		rep(i, k) {
			kari = getint();
			if (kari > mae) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
			mae = kari;
		}
	}
	else {
		rep(i, K) A[i] = getint();
		int kazu = k / K;
		int amari = k % K;
		rep(j, kazu) rep(i, K) {
			kari = getint();
			if (kari > A[i]) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
			A[i] = kari;
		}
		rep(i, amari) {
			kari = getint();
			if (kari > A[i]) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
		}
	}

	fwrite(kotae, 1, it - kotae, stdout);


	Would you please return 0;
}
//  [cpp]
#pragma GCC optimize ("O2")
#pragma GCC target ("avx2")
#include<bits/stdc++.h>
#include<cstdio>
#include<cstring>

using namespace std;
typedef long long ll;
#define rep(i, n) for(int i = 0; i < (n); i++)
#define rep1(i, n) for(int i = 1; i <= (n); i++)
#define co(x) cout << (x) << "\n"
#define cosp(x) cout << (x) << " "
#define ce(x) cerr << (x) << "\n"
#define cesp(x) cerr << (x) << " "
#define pb push_back
#define mp make_pair
#define chmin(x, y) x = min(x, y)
#define chmax(x, y) x = max(x, y)
#define Would
#define you
#define please

int A[100000];
char kotae[800000], * it = kotae;
const int CM = 1 << 17, CL = 12;
char cn[CM + CL], * ci = cn + CM + CL, * owa = cn + CM, ct;
const ll ma0 = 1157442765409226768;
const ll ma1 = 1085102592571150095;
const ll ma2 = 71777214294589695;
const ll ma3 = 281470681808895;
const ll ma4 = 4294967295;
inline int getint() {
	if (ci - owa > 0) {
		memcpy(cn, owa, CL);
		ci -= CM;
		fread(cn + CL, 1, CM, stdin);
	}
	ll tmp = *(ll*)ci;
	if ((tmp & ma0) ^ ma0) {
		int dig = 68 - __builtin_ctzll((tmp & ma0) ^ ma0);
		tmp = tmp << dig & ma1;
		tmp = tmp * 10 + (tmp >> 8) & ma2;
		tmp = tmp * 100 + (tmp >> 16) & ma3;
		tmp = tmp * 10000 + (tmp >> 32) & ma4;
		ci += (72 - dig >> 3);
	}
	else {
		tmp = tmp & ma1;
		tmp = tmp * 10 + (tmp >> 8) & ma2;
		tmp = tmp * 100 + (tmp >> 16) & ma3;
		tmp = tmp * 10000 + (tmp >> 32) & ma4;
		ci += 8;
		while ((ct = *ci++) >= '0') tmp = tmp * 10 + ct - '0';
	}
	return tmp;
}

int main() {
	//cin.tie(0);
	//ios::sync_with_stdio(false);


	int N, K, kari;
	N = getint();
	K = getint();

	int k = N - K;

	if (k <= K) {
		rep(i, k) A[i] = getint();
		rep(i, K - k) {
			if (ci - owa > 0) {
				memcpy(cn, owa, CL);
				ci -= CM;
				fread(cn + CL, 1, CM, stdin);
			}
			ll tmp = *(ll*)ci;
			if ((tmp & ma0) ^ ma0) {
				ci += (__builtin_ctzll((tmp & ma0) ^ ma0) + 4 >> 3);
			}
			else {
				ci += 8;
				while ((ct = *ci++) >= '0') tmp = tmp * 10 + ct - '0';
			}
		}
		rep(i, k) {
			kari = getint();
			if (kari > A[i]) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
		}
	}
	else if (K == 1) {
		int mae = getint();
		rep(i, k) {
			kari = getint();
			if (kari > mae) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
			mae = kari;
		}
	}
	else {
		rep(i, K) A[i] = getint();
		int kazu = k / K;
		int amari = k % K;
		rep(j, kazu) rep(i, K) {
			kari = getint();
			if (kari > A[i]) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
			A[i] = kari;
		}
		rep(i, amari) {
			kari = getint();
			if (kari > A[i]) {
				*it++ = 'Y';
				*it++ = 'e';
				*it++ = 's';
				*it++ = '\n';
			}
			else {
				*it++ = 'N';
				*it++ = 'o';
				*it++ = '\n';
			}
		}
	}

	fwrite(kotae, 1, it - kotae, stdout);


	Would you please return 0;
}
//  [cpp]
#include<iostream>
#include<vector>

#define rep(i ,n) for(int i = 0; i < (n); ++i)

using namespace std;
typedef long long ll;

ll n, k;

ll SumVector(vector<ll>& rsl){
    ll ans = 1;
    rep(i, k) ans *= rsl[i];
    return ans;
}

int main(){
    cin >> n >> k;
    vector<ll> a(n);
    vector<ll> rsl(k);
    int cnt = 0;
    ll tmp;
    int i;
    for(i = 0; i < n; ++i){
        cin >> tmp;
        rsl[cnt++] = tmp;
        if(cnt == k){
            a[i] = SumVector(rsl);
            ++i;
            break;
        }
    }
    for(i; i < n; ++i){
        cin >> tmp;
        if(tmp > rsl[0]) a[i] = 1;
        else a[i] = 0;
        rsl.erase(rsl.begin());
        rsl.push_back(tmp);
    }

    for(int j = k; j < n; ++j){
        if(a[j] == 1) cout << "Yes" << endl;
        else          cout << "No" << endl;
    }

    return 0;
}
//  [cpp]
#include <stdio.h>

int main(){
	long long N, K, count=0;
	scanf("%lld %lld", &N, &K);
	long long s[N];
	for(long long i=0;i<N;i++){
		scanf("%lld",&s[i]);
	}
	long long temp=0;
	for(long long j=K+count; j>0+count; j--){
			temp += s[j-1];
		}
	for(long long i=K-1;i<N-1;i++){
		long long t2=0;
		for(long long j=K+count; j>0+count; j--){
			t2+=s[j];
		}
		if(t2>temp){
			printf("Yes\n");
		}
		else{
			printf("No\n");
		}
		temp=t2;
		count++;
	}
	
	return 0;
}
//  [cpp]
#include<iostream>
#include<vector>
using namespace std;

int main(){
    int N, K, A, A_pop;
    std::cin >> N >> K;
    vector<int> buff(K);
    vector<int> ans(N-K);


    for(int i = 0; i < K; i++){
        std::cin >> buff[i];
    }

    for(int i = 0; i < N-K; i++){
        std::cin >> A;
        A_pop = buff[0];
        if(A_pop < A){
            std::cout << "Yes" << "\n";
        }else{
            std::cout << "No" << "\n";
        }
        buff.erase(buff.begin());
        buff.push_back(A);
    }


}
//  [c]
#include <float.h>
#include <inttypes.h>
#include <limits.h>
#include <signal.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <math.h>
#ifdef __cplusplus
#include <bits/stdc++.h>
#endif
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")

#define getchar getchar_unlocked
#define putchar putchar_unlocked
int32_t nextint(void){ char c=getchar(); while(c!='-'&&(c<'0'||'9'<c)) c=getchar(); bool s=false; if(c=='-'){s=true;c=getchar();} uint32_t x=0; while('0'<=c && c<='9'){ x=x*10+c-'0'; c=getchar(); } return s?-x:x; }
int64_t nextlong(void){ char c=getchar(); while(c!='-'&&(c<'0'||'9'<c)) c=getchar(); int s=0; if(c=='-'){s=1;c=getchar();} uint64_t x=0; while('0'<=c && c<='9'){ x=x*10+c-'0'; c=getchar(); } return s?-x:x; }
uint32_t nextstr(char *s){ char c=getchar(); while(c==' '||c=='\n') c=getchar(); uint32_t len=0; while(c!=' '&&c!='\n'){ *s++=c; len++; c=getchar(); } *s='\0'; return len; }
void rsorta_d32(void *base, const int count, const int size, const int index){
	typedef int32_t rsort_t;
	rsort_t (*a)[size] = (rsort_t(*)[size])base;
	rsort_t (*b)[size] = (rsort_t(*)[size])malloc(count*size*sizeof(rsort_t));
	int c[0x100];
	for(int k=0; k<4; k++){
		memset(c, 0, sizeof(c)); for(int i=0; i<count; i++){ c[(a[i][index]>>(k<<3))&0xFF]++; } for(int i=1; i<0x100; i++) c[i]+=c[i-1]; for(int i=count-1; i>=0; i--){ int to=--c[(a[i][index]>>(k<<3))&0xFF]; for(int j=0; j<size; j++){ b[to][j]=a[i][j]; } }{rsort_t(*t)[size]=a; a=b; b=t;}
	}
	free(b);
}

int a[200000];
int main(void){
	int n=nextint();
	int k=nextint();
	for(int i=0; i<n; i++){
		a[i]=nextint();
	}
	for(int i=k; i<n; i++){
		puts(a[i]>a[i-k]?"Yes":"No");
	}
}
//  [c]
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#define MOD 10000007
#define rep(i,n) for(ll i=0;i<n;i++)
#define revrep(i,n) for(ll i=n;i>0;i--)

typedef long long ll;

ll fac[100001], inv[100001];

ll mygcd(ll a, ll b) { if (b == 0) return a; return mygcd(b, a % b); }

ll mylcm(ll a, ll b) { return a / mygcd(a, b) * b; }

ll mymax(ll a, ll b) { return (a > b) ? a : b; }

ll mymin(ll a, ll b) { return (a < b) ? a : b; }

int myasc(const void* a, const void* b) { return *(ll*)a - *(ll*)b; }

int mydsc(const void* a, const void* b) { return *(ll*)b - *(ll*)a; }

ll mypow(ll a, ll b) {
	ll x;
	if (b == 0) return 1;
	else if (b % 2 == 1) return a * mypow(a, b - 1) % MOD;
	x = mypow(a, b / 2);
	return x * x % MOD;
}

ll mycomb(ll a, ll b) {
	if (a < b || a < 0 || b < 0)return 0;
	return fac[a] * inv[a - b] * inv[b] % MOD;
}

int main() {
	bool flag = false;
	ll n, k,a[200000];
	scanf("%lld%lld",&n,&k);
	rep(i, n) scanf("%lld", &a[i]);
	rep(i, n-k) {
		if (a[k + i] > a[i]) printf("Yes\n");
		else printf("No\n");
	}

	return 0;
}
//  [c]
  #include <stdio.h>

  int main(){
    int n,k;
    scanf("%d %d",&n,&k);
    int a[n];
    for(int i=0;i<n;i++){
      scanf("%d",&a[i]);
    }
    for(int i=0;i<n-k;i++){
      (a[i]<a[i+k])?puts("Yes"):puts("No");
    }
  return 0;
  }
//  [c]
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <limits.h>
#include <stdbool.h>

#define rep(i, n) for(int i=0; i<(n); ++i)
#define max  200001

//qsort(str, n, sizeof(int), up_comp);
int up_comp(const void *a, const void *b){return *(int*)a - *(int*)b;}
int down_comp(const void *a, const void *b){return *(int*)b - *(int*)a;}
int int_sort( const void * a , const void * b ) {return strcmp(( char * )a , ( char * )b );}
int count_digit(int a){int i=0;while(a!=0){a=a/10;i++;}return i;}
int euclid( int a, int b ){int temp;if(a<b){temp=a;a=b;b=temp;}if(b<1)return -1;if(a%b==0) return b;return euclid(b,a%b);}

int main(void){
 
    int n, k, a[max];
    long long int ht[max], bo=1, si=1;
    
    scanf("%d%d", &n, &k);
    rep(i, n){
        scanf("%d", &a[i]);
    }
    
    for (int i=k; i<n; i++) {
        if (a[i-k]<a[i]) {
            printf("Yes\n");
        } else {
            printf("No\n");
        }
    }
    
    return 0;
}
//  [c]
#include<stdio.h>
int main() {

	int n, k, a[200001], i, j = 0;


	scanf("%d%d", &n, &k);

	for (i = 0; i < n; i++)
		scanf("%d", &a[i]);

	for (i = k; i < n; i++) {
		if (a[j] < a[i])
			printf("Yes\n");
		else
			printf("No\n");
		j++;
	}
	
	return 0;
}
//  [c]
#include<stdio.h>


int main()
{
    int n=0,k=0;
    int i;
    int a[200020]={0};

    scanf("%d %d",&n,&k);

    for(i=1;i<=n;i++)
    {
        scanf("%d",&(a[i]));
        if(i>=(k+1))
        {
            if(a[i]>a[i-k])printf("Yes\n");
            else printf("No\n");
        }
    }
}
//  [javascript]
var GET = (function () {function f(s) {return new g(s);}function g(s) {this._s = s.trim().split("\n");}g.prototype.getValue = function (n) {return this._s[n];};g.prototype.getArray = function (n) {return this.stoa(this._s[n]);};g.prototype.slice = function (s, limit) {return this._s.slice(s, +limit + s || undefined).map(v => this.stox(v));};g.prototype.sliceArray = function (s, limit) {return this._s.slice(s, +limit + s || undefined).map(v => this.stoa(v));};g.prototype.stoa = function (s) {return s.split(" ").map(v => this.stox(v));};g.prototype.stox = function (v) {var i = +v;return (i === i) ? i : v;};return f;})();
var o = GET(require("fs").readFileSync("/dev/stdin", "utf8"));

console.log(main());
function main(){
    var NK = o.getArray(0);
    var N = NK[0];
    var K = NK[1];

    var An = o.getArray(1);

    var i = K;
    var result = [];
    while(N > i) {
        result.push(An[i] > An[i - K] ? 'Yes' : 'No');
        i++;
    }

    return result.join('\n');
}
//  [javascript]
// inputに入力データ全体が入る
function Main(input) {

    input = input.split("\n");
  
    line1 = input[0].split(" ");
    let N = parseInt(line1[0], 10);
    let K = parseInt(line1[1], 10);

    line2 = input[1].split(" ");

    let ans = '';
    let pre = 0;
    let cur = 0;

    for (let i = K; i < N; i++) {
        pre = parseInt(line2[i - K], 10);
        cur = parseInt(line2[i], 10);

        if (pre < cur) {
            ans = ans + "Yes\n";
        } else {
            ans = ans + "No\n";
        }
    }

    console.log(ans);
}


Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [javascript]
"use strict";
var input=require("fs").readFileSync("/dev/stdin","utf8");
var cin=input.split(/ |\n/),cid=0;
function next(){return +cin[cid++];}
function nextstr(){return cin[cid++];}
function nextbig(){return BigInt(cin[cid++]);}
function nexts(n,a){return a?cin.slice(cid,cid+=n):cin.slice(cid,cid+=n).map(a=>+a);}
function nextm(h,w,a){var r=[],i=0;if(a)for(;i<h;i++)r.push(cin.slice(cid,cid+=w));else for(;i<h;i++)r.push(cin.slice(cid,cid+=w).map(a=>+a));return r;}
function xArray(v){var a=arguments,l=a.length,r="Array(a["+--l+"]).fill().map(x=>{return "+v+";})";while(--l)r="Array(a["+l+"]).fill().map(x=>"+r+")";return eval(r);}

var myOut = main();
if(myOut !== undefined)console.log(String(myOut));

function main(){
  var n = next(), k = next();
  var a = nexts(n);
  var ans = [];
  for(var i = k; i < n; i++){
    if(a[i-k] < a[i])ans.push("Yes");
    else ans.push("No");
  }
  return ans.join("\n");
}
//  [javascript]
//↓見なくていいよ！ここから--------------------------------------------------
var read = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
var obj;
var inLine = [];
read.on('line', function(input){inLine.push(input);});
read.on('close', function(){
  obj = init(inLine);
  console.error("\n");
  var start = Date.now();
  Main();
  var end = Date.now() - start;
  myerr("time : " + (end) + "ms");
  myerr("memory : " + Math.round(process.memoryUsage().heapTotal / 1024) + "KB");
});
function makeClone(obj){return JSON.parse(JSON.stringify(obj));}
function nextInt(){return myconv(next(),1);} function nextStrArray(){return myconv(next(),2);}
function nextIntArray(){return myconv(next(),4);} function nextCharArray(){return myconv(next(),6);}
function next(){return obj.next();} function hasNext(){return obj.hasNext();}
function init(input){  
  var returnObj = {
    list : input, index : 0, max : input.length,
    hasNext : function(){return (this.index < this.max);},
    next : function(){if(!this.hasNext()){throw "ArrayIndexOutOfBoundsException これ以上ないよ";}else{var returnInput = this.list[this.index];this.index++;return returnInput;}}
  };
  return returnObj;
}
function myout(s){console.log(s);}
function myerr(s){console.error("debug:" + require("util").inspect(s,false,null));}
//[no]要素の扱い。数値型
//不明値、異常時:引数そのまま返す 1:数値へ変換
//2:半角SPで分割 4:半角SPで分割し、数値配列へ
//6:1文字で分割  7:1文字で分割し、数値配列へ
//8:半角SPで結合 9:改行で結合 0:文字なしで結合
function myconv(i,no){try{switch(no){case 1:return parseInt(i);case 2:return i.split(" ");case 4:return i.split(" ").map(Number);case 6:return i.split("");case 7:return i.split("").map(Number);case 8:return i.join(" ");case 9:return i.join("\n");case 0:return i.join("");default:return i;}}catch(e){return i;}}

//↑見なくていいよ！ここまで--------------------------------------------------
function Main(){
	var one = nextIntArray();
	var N = one[0];
	var K = one[1];
	var list = nextIntArray();
	var queue = [];
	var output = [];
	for(var i = 0; i < N; i++){
		if(i < K){
			queue.push(list[i]);
		}else{
			if(queue[0] < list[i]){
				output.push("Yes");
			}else{
				output.push("No");
			}
			queue.shift();
			queue.push(list[i]);
		}
	}
	myout(myconv(output, 9));
}
//  [javascript]
function Main(input) {
  input = input.replace(/\n/g, ' ').split(" ");
  var A = Number(input[0]);
  var B = Number(input[1]);
  input = input.slice(2);
  for(var i=0;i<A-B;i++){
    if(Number(input[i])<Number(input[i+B])){
      console.log("Yes");
    }else{
      console.log("No");
    }
  }
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [javascript]
// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
	input = input.split("\n");
	const row1 = input[0].split(" ");
	const row2 = input[1].split(" ");
	//文字列から10進数に変換するときはparseIntを使います
	var n = parseInt(row1[0], 10);
	var k = parseInt(row1[1], 10);
	var a = row2;

	var first, last;

	for (let i = k; i < n; i++) {
		first = parseInt(a[i - k]);
		last = parseInt(a[i]);
		if (first < last) {
			console.log('Yes');
		} else {
			console.log('No');
		}
	}
}

// 実行 ファイル名により本番かどうか判断
if (__filename.match("Main.js$")) {
	Main(require("fs").readFileSync("/dev/stdin", "utf8"));
} else {
//	Main("3\n4 5\nhello\n");
	Main(require("fs").readFileSync("q3.txt", "utf8"));
}
//  [go]
package main

import (
  "bufio"
  "os"
  "strconv"
  "strings"
  "fmt"
)

func Solve() {
  var N, K int
  var A []int
  NextInt(&N, &K)
  NextIntSlice(&A)
  for i, a := range A[K:] {
    if a > A[i] {
      Write("Yes")
    } else {
      Write("No")
    }
  }
}

func main() {
  Solve()
  Output()
}

var reader = bufio.NewReaderSize(os.Stdin, 1000000)
var writer = bufio.NewWriter(os.Stdout)
func NextLine() string {
  buffer := make([]byte, 0)
  for true {
    line, isPrefix, err := reader.ReadLine()
    if err != nil { panic(err) }
    buffer = append(buffer, line...)
    if !isPrefix { break }
  }
  return string(buffer)
}
func NextInt(A ...*int) {
  L := strings.Split(NextLine(), " ")
  for i, a := range A {
    *a, _ = strconv.Atoi(L[i])
  }
}
func NextIntSlice(A *[]int) {
  L := strings.Split(NextLine(), " ")
  if len(L) == 1 && L[0] == "" {
    (*A) = make([]int, 0)
    return
  }
  (*A) = make([]int, len(L))
  for i, l := range L {
    (*A)[i], _ = strconv.Atoi(l)
  }
}
func NextFloat(A ...*float64) {
  L := strings.Split(NextLine(), " ")
  for i, a := range A {
    *a, _ = strconv.ParseFloat(L[i], 64)
  }
}
func NextFloatSlice(A *[]float64) {
  L := strings.Split(NextLine(), " ")
  if len(L) == 1 && L[0] == "" {
    (*A) = make([]float64, 0)
    return
  }
  (*A) = make([]float64, len(L))
  for i, l := range L {
    (*A)[i], _ = strconv.ParseFloat(l, 64)
  }
}
func Write(S ...interface{}) {
  fmt.Fprintln(writer, S...)
}
func WriteIntSlice(A []int) {
  B := make([]interface{}, len(A))
  for i, a := range A { B[i] = a }
  fmt.Fprintln(writer, B...)
}
func Output() {
  _ = writer.Flush()
}
//  [go]
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

const (
	initialBufSize = 100000
	maxBufSize     = 10000000
)

var (
	sc = bufio.NewScanner(os.Stdin)
	wt = bufio.NewWriter(os.Stdout)
)

func next() string {
	sc.Scan()
	return sc.Text()
}

func nextInt() int {
	i, _ := strconv.Atoi(next())
	return i
}

func nextInts(n int) []int {
	slice := make([]int, n)
	for i := 0; i < n; i++ {
		slice[i] = nextInt()
	}
	return slice
}

func puts(a ...interface{}) {
	fmt.Fprintln(wt, a...)
}

func YesOrNo(b bool) {
	if b {
		puts("Yes")
	} else {
		puts("No")
	}
}

func main() {
	sc.Split(bufio.ScanWords)
	sc.Buffer(make([]byte, initialBufSize), maxBufSize)
	defer wt.Flush()

	n, k := nextInt(), nextInt()
	a := nextInts(n)

	for i := k; i < n; i++ {
		YesOrNo(a[i] > a[i-k])
	}
}
//  [go]
package main

import "fmt"

func main(){
	var n,k int
	fmt.Scan(&n,&k)
	a := make([]int,n)
	for i:=0 ; i<n ; i++ {
		fmt.Scan(&a[i])
	}
	for i:=k;i<n;i++ {
		if a[i-k] < a[i] {
			fmt.Println("Yes")
		} else {
			fmt.Println("No")
		}
	}
}
//  [go]
package main

import (
	"fmt"
)

func main() {

	var N, K int
	fmt.Scanf("%d %d", &N, &K)

	A := make([]int, N)

	for i := 0; i < N; i++ {
		fmt.Scanf("%d", &A[i])
		if i >= K {
			if A[i-K] < A[i] {
				fmt.Println("Yes")
			} else {
				fmt.Println("No")
			}
		}
	}

}
//  [go]
package main

import "fmt"

func main() {
	var n, k, b int
	fmt.Scan(&n, &k)
	var a []int
	for i := 0; i < k; i++ {
		fmt.Scan(&b)
		a = append(a, b)
	}
	var prev, score int
	score = a[0]
	for i := k; i < n; i++ {
		prev = a[i%k]
		fmt.Scan(&b)
		score = b
		if score > prev {
			fmt.Println("Yes")
		} else {
			fmt.Println("No")
		}
		a[i%k] = b
	}
}
//  [ruby]
(n,k)=gets.split.map(&:to_i)
a=gets.split.map(&:to_i)

r = (0...n-k).map{|i| 
    a[i]  < a[i+k] ? 'Yes' : 'No'
}


print r.join("\n")
//  [ruby]
# frozen_string_literal: true

n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)

(k..(n - 1)).each do |i|
  puts a[i - k] < a[i] ? 'Yes' : 'No'
end
//  [ruby]
n,k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)

(n-k).times do |i|
    puts a[i] < a[i+k] ? "Yes" : "No"
end
//  [ruby]
eval'N,K,*A='+`dd`.split*?,
A[K,N].map{puts _1>A.shift ? :Yes: :No}
//  [ruby]
eval'N,K,*A='+`dd`.split*?,;puts (K...N).map{A[_1]>A[_1-K]?:Yes: :No}
//  [ruby]
n, k = gets.split(" ").map(&:to_i)
a = gets.split(" ").map(&:to_i)
(k...n).each do |i|
  prv = 1r
  nxt = prv / a[i-k].to_r * a[i].to_r
  puts (prv < nxt) ? "Yes" : "No"
end
//  [rust]
use proconio::{fastout, input};

#[fastout]
fn main() {
    input! {
        n: usize,
        k: usize,
        a_vec: [i64;n],
    };
    for i in k..n {
        if a_vec[i] - a_vec[i - k] > 0 {
            println!("Yes");
        } else {
            println!("No");
        }
    }
}
//  [rust]
use proconio::{fastout, input};

#[fastout]
fn main() {
    input! {n: usize, k: usize, a:[usize; n]};
    let a: Vec<usize> = a;

    for i in 0..n - k {
        if a[i] < a[i + k] {
            println!("Yes")
        } else {
            println!("No")
        }
    }
}
//  [rust]
use proconio::{input, fastout};

#[fastout]
fn main() {
    input! {
        n: usize, k: usize,
        a: [i32; n],
    }
    let mut j = 0;
    for i in k..n {
        if a[i] > a[j] {println!("Yes");}
        else {println!("No");}
        j += 1;
    }
}
//  [rust]
#![allow(unused, non_snake_case, dead_code, non_upper_case_globals)]
use {
    proconio::{marker::*, *},
    std::{cmp::*, collections::*, mem::*},
};

#[fastout]
fn main() {
    input! {//
        n:usize,
        k:usize,
        a:[i128;n],
    }
    let mut pr = 1i128;
    let mut ans = vec![];
    // let n = 100000;
    // let k = 50000;
    // let mut a = vec![1000000000; n];
    for i in 0..n {
        if i < k {
            // pr *= a[i];
        } else {
            // let now = pr / a[i - k] * a[i];
            if a[i - k] < a[i] {
                ans.push(true);
            } else {
                ans.push(false);
            }
            // pr = now;
        }
        //
    }
    pub fn yn(ans: bool) {
        if ans {
            println!("Yes");
        } else {
            println!("No");
        }
    }
    for &x in ans.iter() {
        yn(x);
    }
}
//  [rust]
#![allow(unused_macros)]
#![allow(dead_code)]
#![allow(unused_imports)]

use text_io::*;

const U_INF: usize = 1 << 60;
const I_INF: isize = 1 << 60;

fn main() {
    let n: usize = read!();
    let k: usize = read!();

    let mut scores = Vec::with_capacity(n);

    for _ in 0..n {
        let score: usize = read!();
        scores.push(score);
    }

    for i in k + 1..=n {
        let ans = if scores[i - 1] > scores[i - k - 1] {
            "Yes"
        } else {
            "No"
        };
        println!("{}", ans);
    }
}
//  [rust]
use text_io::*;

fn main() {
    let n: usize = read!();
    let k: usize = read!();
    let mut v = Vec::new();
    for _ in 0..n {
        let a: usize = read!();
        v.push(a);
    }
    for i in 0..n-k {
        if v[i] < v[i+k] {
            println!("Yes");
        }
        else {
            println!("No");
        }
    }
}
//  [swift]
fileprivate struct Scanner {
    private var elements = [String]()
    private var index = 0
    
    mutating func peek() -> String {
        while elements.count == index {
            elements = readLine()!.split(separator: " ").map(String.init)
            index = 0
        }
        return elements[index]
    }
    
    mutating func next() -> String {
        let value = peek()
        index += 1
        return value
    }
    
    mutating func nextInt() -> Int {
        return Int(next())!
    }
    
    mutating func nextDouble() -> Double {
        return Double(next())!
    }
}

func main() {
    var scanner = Scanner()
    let N = scanner.nextInt()
    let K = scanner.nextInt()
    let A = (0 ..< N).map { _ in scanner.nextInt() }
    
    for i in K ..< N {
        if A[i - K] < A[i] {
            print("Yes")
        } else {
            print("No")
        }
    }
}

main()
//  [swift]
import Foundation

func main() {
    let nk = readLine()!.split(separator: " ").map { Int($0)! }
    let A = readLine()!.split(separator: " ").map { Double($0)! }
    let N = nk[0]
    let K = nk[1]
    
    for i in 0...N-K-1 {
        if A[K+i]/A[i] > 1 { print("Yes") }
        else { print("No") }
    }
}

main()
//  [swift]

import Foundation

let input = readLine()!.components(separatedBy: " ").map{ Int($0)! }
let N = input[0]
let K = input[1]
var pointArray = readLine()!.components(separatedBy: " ").map{ Int($0)! }
let evaluationNum = N - K

for j in 0...evaluationNum - 1 {
    if pointArray[j] < pointArray[j + K] {
        print("Yes")
    } else if pointArray[j] >= pointArray[j + K]{
        print("No")
    }
}
//  [swift]
import Foundation

func main() {
    let split = readLine()!.components(separatedBy: " ").map{Int(String($0))!}
    let n = split[0]
    let k = split[1]
    let points = readLine()!.components(separatedBy: " ").map{Int(String($0))!}

    var nowPoint:Int64 = 1
    for i in k ... n-1 {
        if (points[i]>points[i-k]) {
            print("Yes") 
        } else {
            print("No")
        }
    }
}

main()
//  [swift]
import Foundation

func readInt() -> Int {
    return Int(readLine()!)!
}

func readInts(separator: String.Element = " ") -> [Int] {
    return readLine()!.split(separator: separator).map { Int($0)! }
}

func readTwoInts(separator: String.Element = " ") -> (a: Int, b: Int) {
    let ints = readLine()!.split(separator: separator).map { Int($0)! }
    return (a: ints[0], b: ints[1])
}

func mainC() {
    let (N, K) = readTwoInts()
    let terms = readInts()

    var answer: [String] = []

    for i in K...N {

        if i == K {
            // do nothing
        } else if terms[i - 1] > terms[i - 1 - K] {
            answer.append("Yes")
        } else {
            answer.append("No")
        }
    }

    answer.forEach {
        print($0)
    }
}

mainC()
//  [typescript]
import * as fs from 'fs';

const input = fs.readFileSync('/dev/stdin', 'utf8');
//const input = fs.readFileSync('./input.txt', 'utf8');

_c(input);

function _c(input: string) {
  const [NK, _A] = input.split('\n');
  const [N, K] = NK.split(' ').map((s) => parseInt(s));
  const A = _A.split(' ').map((s) => parseInt(s));

  // A[i+K] > A[i] かどうかを調べる（掛け算する必要はない）
  for (let i = 0; i < N - K; i++) {
    console.log(A[i + K] > A[i] ? 'Yes' : 'No');
  }
}
//  [python]
import sys
import math
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN
from collections import deque
from bisect import bisect_left
from itertools import product
def I(): return int(sys.stdin.readline())
def MI(): return map(int, sys.stdin.readline().split())
def LI(): return list(map(int, sys.stdin.readline().split()))
def LI2(N): return [list(map(int, sys.stdin.readline().split())) for i in range(N)]
#文字列を一文字ずつ数字に変換、'5678'を[5,6,7,8]とできる
def LSI(): return list(map(int, list(sys.stdin.readline().rstrip())))
def LSI2(N): return [list(map(int, list(sys.stdin.readline().rstrip()))) for i in range(N)]
#文字列として取得
def ST(): return sys.stdin.readline().rstrip()
def LST(): return sys.stdin.readline().rstrip().split()
def LST2(N): return [sys.stdin.readline().rstrip().split() for i in range(N)]
def FILL(i,h): return [i for j in range(h)]
def FILL2(i,h,w): return [FILL(i,w) for j in range(h)]
def FILL3(i,h,w,d): return [FILL2(i,w,d) for j in range(h)]
def FILL4(i,h,w,d,d2): return [FILL3(i,w,d,d2) for j in range(h)]
def sisha(num,digit): return Decimal(str(num)).quantize(Decimal(digit),rounding=ROUND_HALF_UP)
#'0.01'や'1E1'などで指定、整数に戻すならintをかます
MOD = 1000000007
INF = float("inf")
sys.setrecursionlimit(10**6+10)
import math

def isPrime(num):
    for i in range(3,math.floor(math.sqrt(num))+1,2):
        if num%i==0:
            return False
    return True


N = I()
cnt = 0
ans = 0
while N%2==0:
    N /= 2
    cnt += 1
power = 1
while cnt-power>=0:
    cnt -= power
    ans += 1
    power += 1
while True:
    if N==1:
        break
    if isPrime(N):
        ans += 1
        break
    else:
        for i in range(3,math.floor(math.sqrt(N))+1,2):
            cnt = 0
            if isPrime(i) and N%i==0:
                while N%i==0:
                    N /= i
                    cnt += 1
                power = 1
                while cnt-power>=0:
                    cnt -= power
                    ans += 1
                    power += 1

print(ans)
//  [python]
def prime_factors(num):
    if num < 2:
        return []
    ret = []
    for i in prime_list(int(num**0.5)):
        if i*i > num:
            break
        while num % i == 0:
            ret.append(i)
            num //= i
    if num > 1:
        ret.append(num)
    return ret

def prime_list(num):
    ret = []
    search = list(range(2, num+1))
    while True:
        if search[0] > num**0.5:
            ret.extend(search)
            break
        else:
            head = search[0]
            ret.append(head)
            search.pop(0)
            search = [n for n in search if n%head != 0]
    return ret

if __name__ == "__main__":
    n = int(input())
    li = prime_factors(n)
    s = set(li)
    res = 0
    for i in s:
        c = li.count(i)
        cc = 0
        step = 1
        while True:
            cc += step
            if cc > c:
                if step > 1: step -=1
                break
            step += 1
        res += step

    print(res)
//  [python]
import numpy as np
import sys
#import copy


def xnxn(n=0):
    """
    args:
        int n: a number of lows to read
    example:
        input   1
        retrun  1

        input   1 2 3
        return  [1,2,3]
        input   1 2 3
                4
        return  [[1,2,3],
                [4]]
    """
    if n == 0:
        temp = list(map(int, input().split()))
        if len(temp) == 1:
            return temp[0]
        elif len(temp) > 1:
            return temp
    else:
        temp = [list(map(int, input().split())) for _ in range(n)]
        return temp


def sp_xnxn(n=0):
    """
    args:
        int n: a number of lows to read
    example
        input   1
        retrun  [1]

        input   123
        return  [1,2,3]

        input   123
                4
        return  [[1,2,3],
                [4]]
    """
    if n == 0:
        return [int(k) for k in xsxs()]
    else:
        return [[int(k) for k in xsxs()] for _ in range(n)]


def xsxs(n=0):
    """
    args:
        int n: a number of lows to read
    example:
        input   AA
        retrun  AA

        input   A BBB CC
        return  ["A","BBB","CC"]

        input   A BB CCC
                D
        return  [["A","BBB","CC"],
                ["D"]]
    """
    if n == 0:
        temp = list(input().split())
        if len(temp) == 1:
            return temp[0]
        elif len(temp) > 1:
            return temp
    else:
        return [list(input().split()) for _ in range(n)]


def sp_xsxs(n=0):
    """
    args:
        int n: a number of lows to read
        example:
            input   A
            retrun  ["A"]

            input   ABC
            return  ["A","B","C"]

            input   ABC
                    D
            return  [["A","B","C"],
                    ["D"]]
    """
    if n == 0:
        return [s for s in xsxs()]
    else:
        return [[s for s in xsxs()] for _ in range(n)]


def p_num(a):

    if a == 1:
        return [[a, 1]]
    else:
        tmp = 2
        ans = []
        while tmp < np.sqrt(a) + 1:
            n = 0
            p = [tmp]

            while a % tmp == 0:
                a = int(a / tmp)
                # p.append(tmp)
                n += 1
                c = 1
            if n != 0:
                p.append(n)
                ans.append(p)
            tmp += 1
            c = 0
        if c == 0 and a != 1:
            ans.append([a, 1])
        return ans


n = xnxn()

if n == 1:
    print(0)
    sys.exit()
else:
    a = p_num(n)
    c = 0
    for num in a:
        i = 1
        while num[1] - i > -1:
            num[1] -= i
            i += 1
            c += 1
    print(c)
//  [java]
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	List<Integer> prime = new ArrayList<>();
	int tri[] = { 0, 1, 3, 6, 10, 15, 21, 28, 36, 45 };

	public void main(Scanner sc) {
		prime.add(2);
		for (int i = 3; i <= 1000000; i += 2) {
			boolean flag = true;
			for (int j = 2; j * j <= i; j++) {
				if (i % j == 0) {
					flag = false;
				}
			}

			if (flag) {
				prime.add(i);
			}
		}

		long n = sc.nextLong();
		int ans = 0;
		for (int p : prime) {
			int cnt = 0;
			if (n % p == 0) {
				while (n % p == 0) {
					n /= p;
					cnt++;
				}
			}

			for (int i = 0; i < 10; i++) {
				if (tri[i] > cnt) {
					ans += (i - 1);
					break;
				}
			}
		}

		if (n != 1) {
			ans++;
		}

		System.out.println(ans);
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		new Main().main(sc);
	}
}
//  [java]
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.ArrayList;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author silviase
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        DDivGame solver = new DDivGame();
        solver.solve(1, in, out);
        out.close();
    }

    static class DDivGame {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            long n = in.nextLong();
            ArrayList<Integer> pr = Prime.eratosthenesSieve(2000000);
            int res = 0;
            for (long prime : pr) {
                int cnt = 0;
                while (n % prime == 0) {
                    //if(cnt == 0) out.println(prime);
                    n /= prime;
                    cnt++;
                }

                //if (cnt > 0) out.println(cnt);
                int plus = cnt < 1 ? 0 :
                        cnt < 3 ? 1 :
                                cnt < 6 ? 2 :
                                        cnt < 10 ? 3 :
                                                cnt < 15 ? 4 :
                                                        cnt < 21 ? 5 :
                                                                cnt < 28 ? 6 :
                                                                        cnt < 36 ? 7 :
                                                                                cnt < 45 ? 8 :
                                                                                        cnt < 55 ? 9 : 10;
                //if(plus > 0) out.println("p:" + plus);
                res += plus;
            }
            if (n != 1) res++;
            out.println(res);
        }

    }

    static class Prime {
        public static ArrayList<Integer> eratosthenesSieve(int n) {
            // n 以下の素数を列挙する, O(N*log(log N))
            ArrayList<Integer> prime = new ArrayList<>();
            ArrayList<Integer> nums = new ArrayList<>();
            for (int i = 2; i <= n; i++) {
                nums.add(i);
            }
            while (nums.get(0) <= Math.sqrt(n)) {
                int nxtPrime = nums.get(0);
                prime.add(nxtPrime);
                nums.removeIf(x -> (x % nxtPrime == 0));
            }
            prime.addAll(nums);
            return prime;
        }

    }
}
//  [cpp]
#include <bits/stdc++.h>
/**
AHMAD;HASSAN;SAEED
*/
using namespace std;
bool isPrim(long long a){
    if(a==1ll)
        return false;
    for(long long i=2ll;i*i<=a;i++){
        if(a%i==0)
        return false;
    }
    return true;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    long long a;
    cin>>a;
    long long ans=0ll;
    long long tma=a;
    for(long long i=1ll;i*i<=tma;i++){

        if(isPrim(i)&&(a%i==0ll)){
            long long num=i;
            while(a%num==0){
                a/=num;
                ans++;
                num*=i;
            }
        }
        if(isPrim((tma/i))&&(a%(tma/i)==0ll)&&(a/i!=i)){
            long long num=(tma/i);
            while(a%num==0){
                a/=num;
                ans++;
                num*=(tma/i);
            }
        }
    }

    cout << ans << endl;
    return 0;
}
//  [cpp]
#include <bits/stdc++.h>
using namespace std;

bool prime(long long x) {
	if (x <= 1LL) return false;
  	if (x == 2LL) return true;
  	for (long long i = 2LL; i * i <= x; ++i) {
    	if (x % i == 0LL) return false;  
    }
  	return true;
}

int main() {
	long long n; cin >> n;
  	map<long long, long long> m;
  	for (long long i = 1LL; i * i <= n; ++i) {
      	if (prime(i)) {
        	long long nn = n;
          	while (nn % i == 0LL) {
            	++m[i], nn /= i;  
            }
        }
      	if (i != n / i && prime(n / i)) {
        	long long nn = n;
          	while (nn % (n / i) == 0LL) {
            	++m[n/i], nn /= n / i;  
            }
        }
    }
  	set<long long> s;
    for (auto tr : m) {
      	//cout << tr.first << " " << tr.second << endl;
    	long long cr = tr.second, mi = 1LL, po = tr.first;
      	while (cr >= mi) {
        	s.insert(po);
          	cr -= mi++;
          	po *= tr.first;
        }
    }
  	long long ans = 0LL;
	for (long long x : s) {
      	//cout << x << endl;
    	if (n % x == 0LL) {
        	++ans, n /= x;  
        }
    }
  	cout << ans << endl;
  	return 0;
}
//  [cpp]
/**

  @@@@@@@  @@@@  @@@@  @@@@  @@@@  @ 
  @  @  @  @  @  @  @  @  @  @  @  @
  @  @  @  @  @  @  @  @  @  @  @  @
  @  @  @  @  @  @  @  @  @  @  @  @
  @  @  @  @@@@  @@@@  @@@@  @  @  @

**/
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ull unsigned long long
#define db double
#define ld long double
#define str string
#define pi pair
#define tup tuple
#define vec vector
#define temp template
#define tn typename

#define ff first
#define ss second
#define SZ(x) (ll) x.size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define rsz resize
#define ins insert
#define fr front 
#define bc back
#define pf push_front
#define pb push_back
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define mk make_pair

#define FOR(i, a, b) for (ll i = (a); i <= (b); i++) 
#define ROF(i, a, b) for (ll i = (a); i >= (b); i--)
#define trav(a, x) for (auto &a : x)
#define popcount __builtin_popcount
#define ctz __builtin_ctz
#define clz __builtin_clz
#define gcd __gcd

// DEBUG
#define ts to_string
temp<tn A, tn B> str ts(pi<A, B> p);
temp<tn A, tn B, tn C> str ts(tup<A, B, C> p);
str ts(const str& s) { return '"' + s + '"'; }
str ts(const char* s) { return ts((str) s); }
str ts(bool b) { return (b ? "true" : "false"); }
str ts(vec<bool> v) { bool f = true; str res = "{";
FOR(i, 0, static_cast<ll>(v.size()) - 1) 
{ if (!f) res += ", "; res += ts(v[i]);
f = false; } res += "}"; return res; }
temp<size_t N> str ts(bitset<N> v) { str res = "";
trav(a, v) { res += (char) ('0' + a); } return res; }
temp<tn A> str ts(A v) { bool f = true; str res = "{";
trav(x, v) { if (!f) res += ", "; res += ts(x);
f = false; } res += "}"; return res; }
temp<tn A, tn B> str ts(pi<A, B> p) { 
  return "(" + ts(p.ff) + ", " + ts(p.ss) + ")"; }
temp<tn A, tn B, tn C> str ts(tup<A, B, C> t) {
  return "(" + ts(get<0>(t)) + ", " + ts(get<1>(t)) + ", " + ts(get<2>(t)) + ")"; }
void DBG() { cerr << endl; }
temp<tn H, tn... T> void DBG(H h, T... t) { cerr << " " << ts(h); DBG(t...); }
#define dbg(...) cerr << "[" << #__VA_ARGS__ << "]:", DBG(__VA_ARGS__);

// INPUT AND OUTPUT
temp<tn T> void re(T& x) { cin >> x; };
temp<tn H, tn... T> void re(H& h, T&... t) { re(h); re(t...); }
temp<tn T> void pr(T x) { cout << x; };
temp<tn H, tn... T> void pr(H h, T... t) { pr(h); pr(t...); }

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  ll n;
  re(n);
  ll ans = 0;
  auto Get = [&](ll x) {
    ll p = 1, sum = 0;
    while (sum <= x) {
      sum += p;
      ++p;
    }
    return p - 2;
  };
  auto Prime = [&](ll x) {
    if (x == 1) return false;
    for (ll i = 2; i * i <= x; i++) {
      if (x % i == 0) {
        return false;
      }
    }
    return true;
  };
  auto Add = [&](ll x, ll m) {
    if (!Prime(x)) return;
    ll cnt = 0;
    while (m % x == 0) {
      m /= x;
      ++cnt;
    }
    ans += Get(cnt);
  };
  for (ll i = 1; i * i <= n; i++) {
    ll j = n / i;
    Add(i, n);
    Add(j, n);
  }
  pr(ans, '\n');
  return 0;
}
//  [c]
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int *prime(void)
{
    int c, cc, max = (int)10e+6;
    int *ans;
    ans = (int *)malloc(sizeof(int) * (max + 1));
    for (c = 0; c <= max; c += 2)
    {
        ans[c] = 0;
    }
    for (c = 3; c <= max; c += 2)
    {
        ans[c] = c;
    }
    ans[2] = 2;
    for (c = 3; c <= (int)10e+3; c += 2)
    {
        if (ans[c] == 0)
        {
            continue;
        }
        for (cc = 2; cc * c <= max; ++cc)
        {
            ans[c * cc] = 0;
        }
    }
    return ans;
}

long powllong(long long c, int power)
{
    int cc;
    long long c0 = c;
    for (cc = 0; cc < power - 1; ++cc)
    {
        c *= c0;
    }
    return c;
}

int main(void)
{
    int *key;
    int c, ans = 0, power;
    long long N, N0;
    scanf("%lld", &N);
    N0 = N;
    if (N == 1)
    {
        printf("0");
        return 0;
    }
    key = prime();
    for (c = 2; c <= (int)10e+6 + 2; ++c)
    {
        if (key[c] != 0)
        {
            power = 1;
            while (N % powllong((long long)c, power) == 0)
            {
                ++ans;
                N /= powllong((long long)c, power);
                ++power;
            }
        }
    }
    if (N == 1)
    {
        printf("%d", ans);
        return 0;
    }
    for (c = 2; c <= (int)10e+6 + 2; ++c)
    {
        if (key[c] != 0 && N % key[c] == 0)
        {
            printf("%d", ans);
            return 0;
        }
    }
    ++ans;
    printf("%d", ans);
    return 0;
}
//  [javascript]
"use strict";

const main = arg => {
    const inputList = arg.trim().split("\n");
    // 回答を記述

    // 回答を記述
    let N = parseInt(inputList[0]);
    const SqrtN = Math.sqrt(N);
    let numList = [] // 素因数分解した後の素数の累乗リスト
    // Nを素因数分解する
    for (let i = 2; i <= SqrtN; i++) {
        let sum = 0;
        while (true) {
            if (N % i !== 0) {
                break;
            }
            N /= i;
            sum++;
        }
        numList.push(sum);
    }

    // √Nまで割って1より大きい=かなり大きい素数のため、素数**1と判定でき、1を追加する
    if (N !== 1) {
        numList.push(1);
    }

    if (numList.length === 0) {
        console.log(0);
    } else {
        let result = 0;
        numList.filter(ele => ele !== 0).forEach(ele => {
            for (let i = 1; i <= ele; i++) {
                ele -= i;
                if (ele < 0) {
                    break;
                }
                result++;
            }
        })

        console.log(result);
    }

}

main(require('fs').readFileSync('/dev/stdin', 'utf8'));
//  [javascript]
"use strict";
var input = require("fs").readFileSync("/dev/stdin", "utf8");
var cin = input.trim().split(/ |\n/), cid = 0;

console.log(main().toString());


function main() {
    var n = +cin.shift();
    var primes = make_primes(Math.sqrt(n));
    if (n == 1) return 0;
    if (n == 2) return 1;
    let ans = 0;
    let p = 2;
    for (let k = 0; p < n; k++) {
        p = primes[k];
        //        while (primes[primes.length - 1] < n) {
        //           primes.push(next_prime(primes, n));
        //      }
        //console.log({p, primes});
        let e = 0;
        while (n % p == 0) {
            e++;
            n = n / p;
        }
        if (e == 0) continue;
        // x=9 なら 1+2+3+4以下なので、3回割れる。 < 2 **4
        // x=10なら 1+2+3+4なので、4回割れる
        let i = 1;
        let sum = 1;
        while (sum + i + 1 <= e) {
            //console.log(sum, i, e);
            sum = sum + i + 1;
            i++;
        }
        ans = ans + i;
    }
    if (n > 1) ans++;

    return ans;
}

function make_primes(max) {
    let primes = [2, 3];
    let flg;
    for (let x = 5; x <= max; x += 2) {
        flg = 0;
        for (let j = 0; primes[j] * primes[j] <= x; j++) {
            if (x % primes[j] == 0) { flg = 1; break; }
        }
        if (flg == 0) { primes.push(x); }
    }
    return primes;
}

function next_prime(primes, max) {
    let flg;
    for (let x = primes[primes.length - 1] + 2; x <= max; x += 2) {
        flg = 0;
        for (let j = 0; primes[j] * primes[j] <= x; j++) {
            if (x % primes[j] == 0) { flg = 1; break; }
        }
        if (flg == 0) { primes.push(x); return x; }
    }
    return primes;
}
//  [javascript]
function Main(input) {
  input = input.split("\n");
  var N = parseInt(input[0]);
  var ans = 0;
  var set = new Set();
  var N2=N;
  function isPrime(n) {
    if (isNaN(n) || !isFinite(n) || n%1 || n<2) return false; 
    var m=Math.sqrt(n);
    for (var i=2;i<=m;i++) if (n%i==0) return false;
    return true;
  }
  for(var i=2;i<Math.sqrt(N);i++){
    if(!set.has(i)&&isPrime(i)){
      var x =i;
      for(var j=1;x<N;j++){
        if(N2%Math.pow(i,j)==0){
          ans++;
          N2=N2/Math.pow(i,j);
        }else{
          break;
        }
        set.add(Math.pow(i,j));
        x=Math.pow(i,j+1);
      }
    }
  }
  if(N2>Math.sqrt(N)){
    ans++;
  }
  



  console.log('%s', ans);
  return ans;
}

function debug(n){
  var input = document.getElementById("input"+n).value;
  var ans=Main(input);
  var result="WA";
  if(ans==document.getElementById("output"+n).value.split("\n")[0]){
    result="AC";
  }
  document.getElementById("result"+n).innerHTML=result;
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [go]
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	N := nextInt64()
	n := N

	if N == 1 {
		fmt.Println(0)
		return
	}

	c := 0
	primes := make(map[int64]int, 0)

	for i := int64(2); i*i <= N; i++ {
		c1 := 0
		for n%i == 0 {
			c1++
			n /= i
		}
		primes[i] = c1
	}
	if n != 1 {
		primes[N] = 1
	}

	for _, e := range primes {
		for x := 1; x <= e; x++ {
			c++
			e -= x
		}
	}
	fmt.Println(c)
}

var stdin = initStdin()

func initStdin() *bufio.Scanner {
	bufsize := 1 * 1024 * 1024 // 1 MB
	var stdin = bufio.NewScanner(os.Stdin)
	stdin.Buffer(make([]byte, bufsize), bufsize)
	stdin.Split(bufio.ScanWords)
	return stdin
}

func nextString() string {
	stdin.Scan()
	return stdin.Text()
}

func nextInt64() int64 {
	i, _ := strconv.ParseInt(nextString(), 10, 64)
	return i
}