//CODE YOUR WAY ;) -->> 
//template owner shivyyy_21 

#include<bits/stdc++.h>
#include <iostream> 
using namespace std;

#define ll long long int
const ll MOD=1e9+7;
#define Loopi for(ll i=0;i<n;i++)
#define Loopj for(ll j=0;j<m;j++)
#define LoopLR(l,r) for(ll i=l;i<=r;i++)
#define pb push_back
#define Umap unordered_map<ll,ll> UM
#define UmapC unordered_map<char,ll> CM
#define Omap map<ll,ll> OM
#define stringtoll(s) stoll(s,nullptr,10)   // convert string to ll 
#define read(a,n) Loopi{  cin>> a[i];  }
#define print(a,n) Loopi{  cout<<a[i]<<" ";  }
#define findsum(a,n) Loopi{  sum+=a[i];  }


bool ispowerof2(ll n)            // ispower of two 
{
    if(n==0)
    return false;
    return (ceil(log2(n))==floor(log2(n)));
}

ll prime[1000002]={0};
void sieve()                    // find primes
{
    prime[0]=1;
    prime[1]=1;
    for(ll i=2;i<=1000000;i++)
    {
        if(prime[i]==0)
        {
        for(ll j=i*i;j<=1000000;j+=i)
        {
          prime[j]=1;  
        }
        }
    }
}

void print_Divisor(ll n)         //print divisors
{ for(int i=1;i<=sqrt(n);i++)
    {  if (n%i==0)
        {
            if (n/i==i)
               cout<<i<<endl;
            else
               cout<<i<<" "<<n/i<<" "<<endl;
        } 
    } 
}
  
ll lcm(ll a,ll b)                //find lcm
{
    return (a*b)/__gcd(a,b);
}
long long int countConsecutive(long long int N) 
{ 
    // constraint on values of L gives us the  
    // time Complexity as O(N^0.5) 
    long long int count = 0; 
    for (long long int L = 1; L * (L + 1) < 2 * N; L++) 
    { 
        double a = (1.0 * N-(L * (L + 1)) / 2) / (L + 1); 
        if (a-(long long int)a == 0.0)  
            count++;         
    } 
    return count; 
} 
void Doit()                      //Karo_Ya_Maro
{
ll n;
cin>>n;
cout<<(countConsecutive(n)+1)*2;


}


int main()
{

ios::sync_with_stdio(false);
cin.tie(NULL);

// ll t;
// cin>>t;

// while(t--)
// {
    Doit();
//}
}

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define _overload3(_1,_2,_3,name,...) name
#define _rep(i,n) repi(i,0,n)
#define repi(i,a,b) for(int i=int(a);i<int(b);++i)
#define rep(...) _overload3(__VA_ARGS__,repi,_rep,)(__VA_ARGS__)
#define ALL(x) (x).begin(),(x).end()
template<class T>bool umax(T &a, const T &b) {if(a<b){a=b;return 1;}return 0;}
template<class T>bool umin(T &a, const T &b) {if(b<a){a=b;return 1;}return 0;}
#ifdef LOCAL
void _debug_out() { cerr << endl; }
template <typename Head, typename... Tail>
void _debug_out(Head H, Tail... T) { cerr << " " << to_string(H); _debug_out(T...); }
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", _debug_out(__VA_ARGS__)
#define eprintf(...) fprintf(stderr, __VA_ARGS__)
#else
#define debug(...) 42
#define eprintf(...) 42
#endif

double dp[101][101][101];

double rec(int a, int b, int c) {
  double sum = a + b + c;
  if(a==100 || b == 100||c ==100) return 0;

  if(dp[a][b][c] != -1) return dp[a][b][c];
  double ret = 0;
  //a
  ret += (a / sum) * (1 + rec(a+1, b, c));
  //b
  ret += (b / sum) * (1 + rec(a, b+1, c));
  //c
  ret += (c / sum) * (1 + rec(a, b, c+1));

  return dp[a][b][c] = ret;
}

int main() {
  int a,b,c; cin >> a >> b >> c;
  rep(i,101) rep(j,101) rep(k,101) dp[i][j][k] = -1;
  printf("%10lf\n", rec(a,b,c));
}
