import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception {

        // 入力データの取得
        Scanner scanner = new Scanner(System.in);
        String inputData = scanner.nextLine();
        scanner.close();

        // 入力データの加工
        long editedInputData = Long.parseLong(inputData);

        // 攻撃の処理
        // モンスターの体力が1のときとそれ以外で分岐する
        long totalAttack = 0;
        if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        }

        // 判定結果を出力する
        System.out.println(totalAttack);

    }

} import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) throws Exception {

        // 入力データの取得
        Scanner scanner = new Scanner(System.in);
        String inputData = scanner.nextLine();
        scanner.close();

        // 入力データの加工
        long editedInputData = Long.parseLong(inputData);

        // 攻撃の処理
        // モンスターの体力が1のときとそれ以外で分岐する
        long totalAttack = 0;
        if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        }

        // 判定結果を出力する
        System.out.println(totalAttack);

    }

} Main public static void main(String[] args) throws Exception {

        // 入力データの取得
        Scanner scanner = new Scanner(System.in);
        String inputData = scanner.nextLine();
        scanner.close();

        // 入力データの加工
        long editedInputData = Long.parseLong(inputData);

        // 攻撃の処理
        // モンスターの体力が1のときとそれ以外で分岐する
        long totalAttack = 0;
        if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        }

        // 判定結果を出力する
        System.out.println(totalAttack);

    } main {

        // 入力データの取得
        Scanner scanner = new Scanner(System.in);
        String inputData = scanner.nextLine();
        scanner.close();

        // 入力データの加工
        long editedInputData = Long.parseLong(inputData);

        // 攻撃の処理
        // モンスターの体力が1のときとそれ以外で分岐する
        long totalAttack = 0;
        if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        }

        // 判定結果を出力する
        System.out.println(totalAttack);

    } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) String inputData = scanner.nextLine(); inputData scanner.nextLine() scanner.nextLine scanner scanner.close() scanner.close scanner long editedInputData = Long.parseLong(inputData); editedInputData Long.parseLong(inputData) Long.parseLong Long inputData long totalAttack = 0; totalAttack 0 if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        } editedInputData == 1 editedInputData 1 {
            totalAttack = 1;
        } totalAttack = 1 totalAttack 1 {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        } double count = 0; count 0 while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            } true {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            } count++ count editedInputData /= 2 editedInputData 2 if (editedInputData == 1) {
                    break;
                } editedInputData == 1 editedInputData 1 {
                    break;
                } break; for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            } int index = 0; int index = 0; index 0 index <= count index count index++ index++ index {
                totalAttack += (long) (Math.pow(2, index));
            } {
                totalAttack += (long) (Math.pow(2, index));
            } totalAttack += (long) (Math.pow(2, index)) totalAttack (long) (Math.pow(2, index)) Math.pow Math 2 index System.out.println(totalAttack) System.out.println System.out System System.out totalAttack String[] args args public class Main {
    public static void main(String[] args) throws Exception {

        // 入力データの取得
        Scanner scanner = new Scanner(System.in);
        String inputData = scanner.nextLine();
        scanner.close();

        // 入力データの加工
        long editedInputData = Long.parseLong(inputData);

        // 攻撃の処理
        // モンスターの体力が1のときとそれ以外で分岐する
        long totalAttack = 0;
        if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        }

        // 判定結果を出力する
        System.out.println(totalAttack);

    }

} public class Main {
    public static void main(String[] args) throws Exception {

        // 入力データの取得
        Scanner scanner = new Scanner(System.in);
        String inputData = scanner.nextLine();
        scanner.close();

        // 入力データの加工
        long editedInputData = Long.parseLong(inputData);

        // 攻撃の処理
        // モンスターの体力が1のときとそれ以外で分岐する
        long totalAttack = 0;
        if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        }

        // 判定結果を出力する
        System.out.println(totalAttack);

    }

} Main
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception {

        // 入力データの取得
        Scanner scanner = new Scanner(System.in);
        String inputData = scanner.nextLine();
        scanner.close();

        // 入力データの加工
        long editedInputData = Long.parseLong(inputData);

        // 攻撃の処理
        // モンスターの体力が1のときとそれ以外で分岐する
        long totalAttack = 0;
        if (editedInputData == 1) {
            totalAttack = 1;
        } else {
            double count = 0;
            while (true) {
                count++;
                editedInputData /= 2;
                if (editedInputData == 1) {
                    break;
                }
            }
            for (int index = 0; index <= count; index++) {
                totalAttack += (long) (Math.pow(2, index));
            }
        }

        // 判定結果を出力する
        System.out.println(totalAttack);

    }

}