#define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES #include "bits/stdc++.h" #define REP(i,a,b) for(i=a;i> a;}; template void reader(T& t,U& u){reader(t); reader(u);} template void reader(T& t,U& u,V& v){reader(t); reader(u); reader(v);} void writer(int a,char c) {printf("%d",a); putchar(c);} void writer(ll a,char c) {printf("%lld",a); putchar(c);} void writer(double a,char c) {printf("%.20lf",a); putchar(c);} void writer(char a[]) {printf("%s",a);}; void writer(char a[],char c) {printf("%s",a);putchar(c);}; void writer(char a,char c) {putchar(a); putchar(c);}; templatevoid writerLn(T t){writer(t,'\n');} templatevoid writerLn(T t,U u){writer(t,' ');writer(u,'\n');} template void writerLn(T t,U u,V v){writer(t,' ');writer(u,' ');writer(v,'\n');} template void writerArr(T x[], int n){int i;if(!n){putchar('\n');return;}rep(i,n-1) writer(x[i],' ');writer(x[n-1],'\n');} template void writerVec(vector x){int n=x.size();int i;if(!n){putchar('\n');return;}rep(i,n-1) writer(x[i],' ');writer(x[n-1],'\n');} vector split(const std::string &str, char sep){std::vector v;std::stringstream ss(str);std::string buffer;while(std::getline(ss,buffer,sep)){v.push_back(buffer);}return v;} // #define int ll bool test = 1; int dx[] = {0,0,1,-1}; int dy[] = {1,-1,0,0}; //..................... bool f(vector A) { if(A[0] == A[1] || A[0] == A[2]) return false; if(A[1] == A[0] || A[1] == A[2]) return false; if(A[1] > A[0] && A[1] > A[2]) return true; else if(A[1] < A[0] && A[1] < A[2]) return true; else return false; } #define MAX 100000 signed main(){ int i,j,k; vector A(3); rep(i,3) cin >> A[i]; if(f(A)) puts("INF"); else { int ans = 0; REP(i,1,2000) { vector B(3); rep(j,3) B[j] = A[j]%i; if(f(B)) ans++; } cout << ans << endl; } return 0; }