#include <bits/stdc++.h>
using namespace std;
const int iinf = 0x3f3f3f3f;
const long long linf = 0x3f3f3f3f3f3f3f3f;
const int N = 1000;
const double eps = 1e-8;
double f[N + 1][N + 1];
bool vis[N + 1][N + 1];
double dp(int n, int m) {
  if (vis[n][m]) return f[n][m];
  vis[n][m] = true;
  double& res = f[n][m];
  if (!m)
    res = 1;
  else if (!n)
    res = 1. / (m + 1);
  else {
    double gg = 1. * m / (m + 1) * (1 - dp(m - 1, n)) + 1. / (m + 1) * 0;
    double gd = 1. * m / (m + 1) * (1 - dp(m - 1, n)) + 1. / (m + 1) * 1;
    double dg = 1, dd = 1 - dp(m, n - 1);
    res = (dd - dg) / (gg - dg - gd + dd) * (gg - dg) + dg;
  }
  return res;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  cout.precision(12);
  int n, m;
  cin >> n >> m;
  double ans(dp(n, m));
  cout << fixed << ans << " " << 1 - ans << '\n';
  return 0;
}
