import java.util.*;

// Base class
class BinaryTransformer {
    public String transform(String binary) {
        return binary; // default (not used)
    }
}

// Child class applying the custom transformation
class CustomBinaryTransformer extends BinaryTransformer {
    @Override
    public String transform(String binary) {
        StringBuilder modified = new StringBuilder();

        for (int pos = 0; pos < binary.length(); pos++) {
            char ch = binary.charAt(pos);

            if (ch == '0') {
                // odd–4, even–3 replacement rule
                if ((pos + 1) % 2 == 0)
                    modified.append('3');
                else
                    modified.append('4');
            } else {
                modified.append('1');
            }
        }
        return modified.toString();
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // Input validation
        if (!sc.hasNextInt()) {
            System.out.println("Invalid input");
            return;
        }

        int N = sc.nextInt();

        if (N < 0) {
            System.out.println("Invalid input");
            return;
        }

        BinaryTransformer transformer = new CustomBinaryTransformer();
        StringBuilder output = new StringBuilder();

        for (int i = 1; i <= N; i++) {
            String binary = Integer.toBinaryString(i);
            String modified = transformer.transform(binary); // polymorphic call
            output.append(modified).append(" ");
        }

        System.out.println(output.toString().trim());
    }
}
