#include #include #include #include #include #include #include #include #include #include #include using namespace std; bool f(vector &as) { bool eq = false; for (auto i = 0; i < 3; ++i) { eq |= as[i] == as[(i + 1) % 3]; } return eq; } bool g(vector &as) { return max_element(as.begin(), as.end()) - as.begin() == 1 || min_element(as.begin(), as.end()) - as.begin() == 1; } int main() { vector as(3); for (auto i = 0; i < 3; ++i) { cin >> as[i]; } if (f(as)) { cout << 0 << endl; return 0; } if (g(as)) { cout << "INF" << endl; return 0; } int32_t ans = 0; for (auto i = 1, e = *max_element(as.begin(), as.end()); i <= e; ++i) { vector as2(3); for (auto j = 0; j < 3; ++j) { as2[j] = as[j] % i; } if (f(as2)) continue; if (g(as2)) ++ans; } cout << ans << endl; return 0; }