#include <bits/stdc++.h>
using namespace std;
const int N = 1000 + 10;
int rd() {
  int x = 0, w = 1;
  char ch = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + (ch ^ 48);
    ch = getchar();
  }
  return x * w;
}
double f[N][N];
int n, m;
int main() {
  n = rd(), m = rd();
  int nn = max(n, m);
  for (int i = 0; i <= nn; ++i) f[i][0] = 1;
  for (int i = 1; i <= nn; ++i) f[0][i] = 1 / (double)(i + 1);
  for (int sm = 2; sm <= n + m; ++sm)
    for (int i = 1, j = sm - i; i <= nn && j > 0; ++i, --j) {
      if (j > nn) continue;
      double q = 1 / (double)(j + 1), p = q / (f[j][i - 1] + q);
      f[i][j] = p * (2 - f[j][i - 1]) / 2 +
                (1 - p) * (q + 2 * q * j * (1 - f[j - 1][i])) / 2;
    }
  printf("%.10lf %.10lf\n", f[n][m], 1 - f[n][m]);
  return 0;
}
