#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e4 + 3;
long long mu[MAXN];
bool is_prime[MAXN] = {false};
void sieve_eratosthenes() {
std::fill(&is_prime[0], &is_prime[0] + MAXN, true);
is_prime[1] = false;
for(int i = 2; i*i <= MAXN; i++){
if(is_prime[i]){
for(int j = i*i; j < MAXN; j += i){
is_prime[j] = false;
}
}
}
}
void compute_mu() {
mu[1] = 1;
for(int i = 2; i < MAXN; i++) {
if(is_prime[i]) {
mu[i] = -1;
for(int j = MAXN/i; j > 1; j--) {
if(j == i || j*i >= MAXN) continue;
mu[j*i] = mu[j] * (-1);
}
}
}
}
long long F[MAXN];
int main() {
ios_base::sync_with_stdio(false);
long long alpha, beta;
alpha = 1234123;
beta = 34123;
sieve_eratosthenes();
compute_mu();
for(int g = 1; g < MAXN; g++) {
for(int k = g; k < MAXN; k += g) {
F[g] += mu[k/g] * (alpha/k) * (beta/k);
}
}
for(int g = 1; g < MAXN; g++) {
long long temp = (alpha/g) * (beta/g);
for(int k = g*2; k < MAXN; k += g) {
temp -= F[k];
}
assert(temp == F[g]);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYTiA9IDFlNCArIDM7CmxvbmcgbG9uZyBtdVtNQVhOXTsKCmJvb2wgaXNfcHJpbWVbTUFYTl0gPSB7ZmFsc2V9Owp2b2lkIHNpZXZlX2VyYXRvc3RoZW5lcygpIHsKCXN0ZDo6ZmlsbCgmaXNfcHJpbWVbMF0sICZpc19wcmltZVswXSArIE1BWE4sIHRydWUpOwoJaXNfcHJpbWVbMV0gPSBmYWxzZTsKCWZvcihpbnQgaSA9IDI7IGkqaSA8PSBNQVhOOyBpKyspewoJCWlmKGlzX3ByaW1lW2ldKXsKCQkJZm9yKGludCBqID0gaSppOyBqIDwgTUFYTjsgaiArPSBpKXsKCQkJCWlzX3ByaW1lW2pdID0gZmFsc2U7CgkJCX0KCQl9Cgl9Cn0Kdm9pZCBjb21wdXRlX211KCkgewogICAgbXVbMV0gPSAxOwogICAgZm9yKGludCBpID0gMjsgaSA8IE1BWE47IGkrKykgewogICAgICAgIGlmKGlzX3ByaW1lW2ldKSB7CiAgICAgICAgICAgIG11W2ldID0gLTE7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IE1BWE4vaTsgaiA+IDE7IGotLSkgewogICAgICAgICAgICAgICAgaWYoaiA9PSBpIHx8IGoqaSA+PSBNQVhOKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIG11W2oqaV0gPSBtdVtqXSAqICgtMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmxvbmcgbG9uZyBGW01BWE5dOwoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGxvbmcgbG9uZyBhbHBoYSwgYmV0YTsKICAgIGFscGhhID0gMTIzNDEyMzsKICAgIGJldGEgPSAzNDEyMzsKICAgIHNpZXZlX2VyYXRvc3RoZW5lcygpOwogICAgY29tcHV0ZV9tdSgpOwogICAgZm9yKGludCBnID0gMTsgZyA8IE1BWE47IGcrKykgewogICAgICAgIGZvcihpbnQgayA9IGc7IGsgPCBNQVhOOyBrICs9IGcpIHsKICAgICAgICAgICAgRltnXSArPSBtdVtrL2ddICogKGFscGhhL2spICogKGJldGEvayk7CiAgICAgICAgfQogICAgfQogICAgZm9yKGludCBnID0gMTsgZyA8IE1BWE47IGcrKykgewogICAgICAgIGxvbmcgbG9uZyB0ZW1wID0gKGFscGhhL2cpICogKGJldGEvZyk7CiAgICAgICAgZm9yKGludCBrID0gZyoyOyBrIDwgTUFYTjsgayArPSBnKSB7CiAgICAgICAgICAgIHRlbXAgLT0gRltrXTsKICAgICAgICB9CiAgICAgICAgYXNzZXJ0KHRlbXAgPT0gRltnXSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=