#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int a,b,c;
if(!(cin>>a>>b>>c)) return 0;
int N = max({a,b,c});
vector<int> primes;
vector<bool> is(N+1,true);
is[0]=is[1]=false;
for(int i=2;i*i<=N;i++) if(is[i]) for(long long j=1LL*i*i;j<=N;j+=i) is[(int)j]=false;
for(int i=2;i<=N;i++) if(is[i]) primes.push_back(i);
sort(primes.rbegin(), primes.rend());
vector<vector<int>> pw;
pw.reserve(primes.size());
for(int p:primes){
vector<int> v(1,1);
long long x=1;
while(x<=N/p){
x*=p;
v.push_back((int)x);
}
pw.push_back(move(v));
}
const uint32_t MASK = (1u<<30)-1u;
auto pack = [](int x,int y,int z)->uint64_t{
return (uint64_t)x<<28 | (uint64_t)y<<14 | (uint64_t)z;
};
unordered_map<uint64_t,uint32_t> cur, nxt;
cur.reserve(1024);
cur[pack(a,b,c)] = 1u;
for(size_t idx=0; idx<primes.size(); ++idx){
const vector<int>& pws = pw[idx];
nxt.clear();
nxt.reserve(cur.size()*2+1024);
for(auto &it: cur){
uint64_t key=it.first;
uint32_t val=it.second;
int x = (int)(key>>28);
int y = (int)((key>>14)&((1<<14)-1));
int z = (int)(key & ((1<<14)-1));
int ex_max = upper_bound(pws.begin(), pws.end(), x) - pws.begin() - 1;
int ey_max = upper_bound(pws.begin(), pws.end(), y) - pws.begin() - 1;
int ez_max = upper_bound(pws.begin(), pws.end(), z) - pws.begin() - 1;
for(int ex=0; ex<=ex_max; ++ex){
int nx = x / pws[ex];
for(int ey=0; ey<=ey_max; ++ey){
int ny = y / pws[ey];
for(int ez=0; ez<=ez_max; ++ez){
int nz = z / pws[ez];
uint64_t k2 = pack(nx,ny,nz);
uint32_t add = (uint32_t)(((uint64_t)val * (uint32_t)(ex+ey+ez+1)) & MASK);
auto it2 = nxt.find(k2);
if(it2==nxt.end()) nxt.emplace(k2, add);
else { it2->second += add; it2->second &= MASK; }
}
}
}
}
cur.swap(nxt);
}
uint32_t ans = 0;
for(auto &it: cur){ ans += it.second; ans &= MASK; }
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBpbnQgYSxiLGM7CiAgICBpZighKGNpbj4+YT4+Yj4+YykpIHJldHVybiAwOwogICAgaW50IE4gPSBtYXgoe2EsYixjfSk7CiAgICB2ZWN0b3I8aW50PiBwcmltZXM7CiAgICB2ZWN0b3I8Ym9vbD4gaXMoTisxLHRydWUpOwogICAgaXNbMF09aXNbMV09ZmFsc2U7CiAgICBmb3IoaW50IGk9MjtpKmk8PU47aSsrKSBpZihpc1tpXSkgZm9yKGxvbmcgbG9uZyBqPTFMTCppKmk7ajw9TjtqKz1pKSBpc1soaW50KWpdPWZhbHNlOwogICAgZm9yKGludCBpPTI7aTw9TjtpKyspIGlmKGlzW2ldKSBwcmltZXMucHVzaF9iYWNrKGkpOwogICAgc29ydChwcmltZXMucmJlZ2luKCksIHByaW1lcy5yZW5kKCkpOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBwdzsKICAgIHB3LnJlc2VydmUocHJpbWVzLnNpemUoKSk7CiAgICBmb3IoaW50IHA6cHJpbWVzKXsKICAgICAgICB2ZWN0b3I8aW50PiB2KDEsMSk7CiAgICAgICAgbG9uZyBsb25nIHg9MTsKICAgICAgICB3aGlsZSh4PD1OL3ApewogICAgICAgICAgICB4Kj1wOwogICAgICAgICAgICB2LnB1c2hfYmFjaygoaW50KXgpOwogICAgICAgIH0KICAgICAgICBwdy5wdXNoX2JhY2sobW92ZSh2KSk7CiAgICB9CiAgICBjb25zdCB1aW50MzJfdCBNQVNLID0gKDF1PDwzMCktMXU7CiAgICBhdXRvIHBhY2sgPSBbXShpbnQgeCxpbnQgeSxpbnQgeiktPnVpbnQ2NF90ewogICAgICAgIHJldHVybiAodWludDY0X3QpeDw8MjggfCAodWludDY0X3QpeTw8MTQgfCAodWludDY0X3QpejsKICAgIH07CiAgICB1bm9yZGVyZWRfbWFwPHVpbnQ2NF90LHVpbnQzMl90PiBjdXIsIG54dDsKICAgIGN1ci5yZXNlcnZlKDEwMjQpOwogICAgY3VyW3BhY2soYSxiLGMpXSA9IDF1OwogICAgZm9yKHNpemVfdCBpZHg9MDsgaWR4PHByaW1lcy5zaXplKCk7ICsraWR4KXsKICAgICAgICBjb25zdCB2ZWN0b3I8aW50PiYgcHdzID0gcHdbaWR4XTsKICAgICAgICBueHQuY2xlYXIoKTsKICAgICAgICBueHQucmVzZXJ2ZShjdXIuc2l6ZSgpKjIrMTAyNCk7CiAgICAgICAgZm9yKGF1dG8gJml0OiBjdXIpewogICAgICAgICAgICB1aW50NjRfdCBrZXk9aXQuZmlyc3Q7CiAgICAgICAgICAgIHVpbnQzMl90IHZhbD1pdC5zZWNvbmQ7CiAgICAgICAgICAgIGludCB4ID0gKGludCkoa2V5Pj4yOCk7CiAgICAgICAgICAgIGludCB5ID0gKGludCkoKGtleT4+MTQpJigoMTw8MTQpLTEpKTsKICAgICAgICAgICAgaW50IHogPSAoaW50KShrZXkgJiAoKDE8PDE0KS0xKSk7CiAgICAgICAgICAgIGludCBleF9tYXggPSB1cHBlcl9ib3VuZChwd3MuYmVnaW4oKSwgcHdzLmVuZCgpLCB4KSAtIHB3cy5iZWdpbigpIC0gMTsKICAgICAgICAgICAgaW50IGV5X21heCA9IHVwcGVyX2JvdW5kKHB3cy5iZWdpbigpLCBwd3MuZW5kKCksIHkpIC0gcHdzLmJlZ2luKCkgLSAxOwogICAgICAgICAgICBpbnQgZXpfbWF4ID0gdXBwZXJfYm91bmQocHdzLmJlZ2luKCksIHB3cy5lbmQoKSwgeikgLSBwd3MuYmVnaW4oKSAtIDE7CiAgICAgICAgICAgIGZvcihpbnQgZXg9MDsgZXg8PWV4X21heDsgKytleCl7CiAgICAgICAgICAgICAgICBpbnQgbnggPSB4IC8gcHdzW2V4XTsKICAgICAgICAgICAgICAgIGZvcihpbnQgZXk9MDsgZXk8PWV5X21heDsgKytleSl7CiAgICAgICAgICAgICAgICAgICAgaW50IG55ID0geSAvIHB3c1tleV07CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBlej0wOyBlejw9ZXpfbWF4OyArK2V6KXsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG56ID0geiAvIHB3c1tlel07CiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGsyID0gcGFjayhueCxueSxueik7CiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZCA9ICh1aW50MzJfdCkoKCh1aW50NjRfdCl2YWwgKiAodWludDMyX3QpKGV4K2V5K2V6KzEpKSAmIE1BU0spOwogICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGl0MiA9IG54dC5maW5kKGsyKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXQyPT1ueHQuZW5kKCkpIG54dC5lbXBsYWNlKGsyLCBhZGQpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgaXQyLT5zZWNvbmQgKz0gYWRkOyBpdDItPnNlY29uZCAmPSBNQVNLOyB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGN1ci5zd2FwKG54dCk7CiAgICB9CiAgICB1aW50MzJfdCBhbnMgPSAwOwogICAgZm9yKGF1dG8gJml0OiBjdXIpeyBhbnMgKz0gaXQuc2Vjb25kOyBhbnMgJj0gTUFTSzsgfQogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9Cg==