#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const int N = 5005;
int n, m;
double ans, F[N][N];
bool vis[N][N];
double cal(double b, double x, double y, double ps) {
  return (1 - b) * ps * x + min(1 - ps, ps * b + (1 - ps) * (1 - y));
}
double f(int a, int b, int fl) {
  if (!b) return 1;
  if (!a) return 1 / (double)(b + 1);
  if (vis[a][b]) return F[a][b];
  double res = 1 / (double)(b + 1);
  vis[a][b] = 1;
  double y = f(b, a - 1, 0), x = 1 - f(b - 1, a, 0);
  return F[a][b] =
             max(res, cal(1 / (double)(b + 1), x, y,
                          y * (double)(b + 1) / (1 + y * (double)(b + 1))));
}
int main() {
  int i, j;
  cin >> n >> m, ans = f(n, m, 0);
  printf("%.9lf %.9lf", ans, 1 - ans);
  return 0;
}
