#pragma comment(linker, "/stack:200000000")
                #pragma GCC optimize ("Ofast")
                #pragma GCC target ("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
                #include <iostream>
                #include <iomanip>
                #include <sstream>
                #include <cstring>
                #include <vector>
                #include <deque>
                #include <queue>
                #include <set>
                #include <map>
                #include <valarray>
                #include <iterator>
                #include <functional>
                #include <limits>
                #include <algorithm>
                #include <numeric>
                #include <cmath>
                #include <cassert>
                #include <unordered_map>
                #include <unordered_set>
                #include <stack>
                using namespace std;
                #define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
                 #define trace(x) cerr << #x << ": " << x << " " << endl;
             
                typedef int64_t ll;
             
                #define endl '\n'
                #define int ll
                ll mod=1e9+7;
                ll mod1=1e9+5;
                
                ll power(ll a,ll b)
                {
                    if(b==0) return 1;
                    else if(b%2==0)
                        return power((((a%mod)*(a%mod))%mod),b/2)%mod;
                    else return ((a%mod)*(power((((a%mod)*(a%mod))%mod),b/2)%mod))%mod;
                }
                
             int32_t main()
                {
                IOS
              
                
            int a,b;
            cin>>a>>b;
            int p,q,r,s;
            cin>>p>>q>>r>>s;
            if(a*p+b*q==r*a+s*b or p==r)
            {
                cout<<"infinity";
                return 0;
            }
            if(p>r and q>s)
            {
                cout<<0;
                return 0;
            }
            int dis=a*p+b*q;
            int dis1=r*a+s*b;
            int ans=0;
            if(dis>dis1)
            {
                if(p>r)
                {
                    cout<<0;
                    return 0;
                }
                if(p<r)
                {
                    int re=0;
                        int fin=a*r-a*p;
                        int x=fin/(dis-dis1);
                        ans+=2*(x);
                        re+=(dis-dis1)*x;
                    while(1)
                    {
                        if(re>(a*r-a*p))
                            break;

                        if(re==(a*r-a*p))
                        {
                            ans++;
                            break;
                        }
                        re+=dis-dis1;
                        ans+=2;

                    }
                    cout<<ans-1;
                    return 0;
                }
            }
            if(dis1>dis)
            {
                if(r>p)
                {
                    cout<<0;
                    return 0;
                }
                if(r<p)
                {
                    int re=0;
                    int fin=a*p-a*r;
                        int x=fin/(dis1-dis);
                        ans+=2*(x);
                        re+=(dis1-dis)*x;

                    while(1)
                    {
                        if(re>(a*p-a*r))
                            break;
                        if(re==(a*p-a*r))
                        {
                            ans++;
                            break;
                        }
                        re+=dis1-dis;
                        ans+=2;

                    }
                    cout<<ans-1;
                }
            }

                
            }

Measured memory_bytes: 256