#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;
}
