#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
const double eps = 1e-8;
int n, m, sx, sy;
double f[N][N];
double a[N][N];
inline int gauss() {
  int r, c;
  for (r = c = 1; c <= m; c++) {
    a[r][m + 1] /= a[r][c];
    for (int i = min(m, c + 1); i >= c; i--) a[r][i] /= a[r][c];
    if (r < m) {
      a[r + 1][m + 1] -= a[r][m + 1] * a[r + 1][c];
      for (int j = min(m, c + 2); j >= c; j--)
        a[r + 1][j] -= a[r][j] * a[r + 1][c];
    }
    r++;
  }
  if (r < m + 1) {
    for (int i = r; i <= m; i++)
      if (fabs(a[i][m + 1]) > eps) return 3;
    return 2;
  }
  for (int i = m - 1; i >= 1; i--)
    for (int j = min(m, i + 2); j > i; j--)
      a[i][m + 1] -= a[i][j] * a[j][m + 1];
  return 1;
}
int main() {
  scanf("%d%d%d%d", &n, &m, &sx, &sy);
  for (int j = 1; j <= m; j++) f[n][j] = 0;
  for (int i = n - 1; i >= sx; i--) {
    memset(a, 0, sizeof(a));
    for (int j = 1; j <= m; j++) {
      if (j == 1 && j == m)
        a[j][1] = 1.0 / 2, a[j][m + 1] = 1 + f[i + 1][j] / 2;
      else if (j == 1)
        a[j][1] = 2.0 / 3, a[j][2] = -1.0 / 3,
        a[j][m + 1] = 1 + f[i + 1][j] / 3;
      else if (j == m)
        a[j][m] = 2.0 / 3, a[j][m - 1] = -1.0 / 3,
        a[j][m + 1] = 1 + f[i + 1][j] / 3;
      else
        a[j][j] = 3.0 / 4, a[j][j - 1] = -1.0 / 4, a[j][j + 1] = -1.0 / 4,
        a[j][m + 1] = 1 + f[i + 1][j] / 4;
    }
    gauss();
    for (int j = 1; j <= m; j++) f[i][j] = a[j][m + 1];
  }
  printf("%.4f", f[sx][sy]);
  return 0;
}
