#include <bits/stdc++.h>
using namespace std;
struct edge {
  long long int A;
  long long int B;
};
bool edgecompare(edge lhs, edge rhs) {
  if (lhs.B != rhs.B)
    return lhs.B < rhs.B;
  else
    return lhs.A < rhs.A;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int n, m, i, j, k, flag = 0, a[100005];
  string str;
  map<long long int, long long int> Map;
  set<long long int> Set;
  set<long long int, greater<long long int> >::iterator itr;
  cin >> n >> k;
  long long int ma = 0;
  i = 0;
  while (pow(2, i) <= n) {
    i++;
  }
  ma = pow(2, i) - 1;
  if (k == 1)
    cout << n;
  else
    cout << ma;
  return 0;
}
