Submission #6380138


Source Code Expand

Copy
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author Egor Kulikov (egor@egork.net)
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        OutputWriter out = new OutputWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public void solve(int testNumber, InputReader in, OutputWriter out) {
            int n = in.readInt();
            if (Integer.bitCount(n) == 1) {
                out.printLine("No");
                return;
            }
            out.printLine("Yes");
            int[] a = new int[2 * n - 1];
            int[] b = new int[2 * n - 1];
            int at = 0;
            int k = (n + 1) / 4;
            for (int i = 1; i < 4 * k - 1; i++) {
                a[at] = i;
                b[at++] = i + 1;
            }
            for (int i = 2; i < 4 * k - 1; i++) {
                a[at] = i + n;
                b[at++] = i + n + 1;
            }
            a[at] = 1;
            b[at++] = 4 * k - 1 + n;
            if (n == 4 * k - 1 || n == 4 * k) {
                a[at] = n + 1;
                b[at++] = n + 2;
                if (n == 4 * k) {
                    int highest = Integer.highestOneBit(n);
                    a[at] = highest;
                    b[at++] = n;
                    a[at] = n - highest + 1;
                    b[at++] = 2 * n;
                }
            } else {
                a[at] = 1;
                b[at++] = 4 * k + 1;
                a[at] = 4 * k + 1;
                b[at++] = 4 * k;
                a[at] = 4 * k;
                b[at++] = n + 1;
                a[at] = n + 1;
                b[at++] = n + 4 * k + 1;
                a[at] = n + 4 * k + 1;
                b[at++] = n + 4 * k;
                if (n == 4 * k + 2) {
                    a[at] = 2;
                    b[at++] = 4 * k + 2;
                    a[at] = 4 * k + 1;
                    b[at++] = n + 4 * k + 2;
                }
            }
            for (int i = 0; i < 2 * n - 1; i++) {
                out.printLine(a[i], b[i]);
            }
        }

    }

    static class InputReader {
        private InputStream stream;
        private byte[] buf = new byte[1024];
        private int curChar;
        private int numChars;
        private InputReader.SpaceCharFilter filter;

        public InputReader(InputStream stream) {
            this.stream = stream;
        }

        public int read() {
            if (numChars == -1) {
                throw new InputMismatchException();
            }
            if (curChar >= numChars) {
                curChar = 0;
                try {
                    numChars = stream.read(buf);
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
                if (numChars <= 0) {
                    return -1;
                }
            }
            return buf[curChar++];
        }

        public int readInt() {
            int c = read();
            while (isSpaceChar(c)) {
                c = read();
            }
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            int res = 0;
            do {
                if (c < '0' || c > '9') {
                    throw new InputMismatchException();
                }
                res *= 10;
                res += c - '0';
                c = read();
            } while (!isSpaceChar(c));
            return res * sgn;
        }

        public boolean isSpaceChar(int c) {
            if (filter != null) {
                return filter.isSpaceChar(c);
            }
            return isWhitespace(c);
        }

        public static boolean isWhitespace(int c) {
            return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
        }

        public interface SpaceCharFilter {
            public boolean isSpaceChar(int ch);

        }

    }

    static class OutputWriter {
        private final PrintWriter writer;

        public OutputWriter(OutputStream outputStream) {
            writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
        }

        public OutputWriter(Writer writer) {
            this.writer = new PrintWriter(writer);
        }

        public void print(Object... objects) {
            for (int i = 0; i < objects.length; i++) {
                if (i != 0) {
                    writer.print(' ');
                }
                writer.print(objects[i]);
            }
        }

        public void printLine(Object... objects) {
            print(objects);
            writer.println();
        }

        public void close() {
            writer.close();
        }

    }
}

Submission Info

Submission Time
Task C - Skolem XOR Tree
User Egor
Language Java8 (OpenJDK 1.8.0)
Score 700
Code Size 5509 Byte
Status AC
Exec Time 336 ms
Memory 50252 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 37
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt
Case Name Status Exec Time Memory
hand_01.txt AC 76 ms 24916 KB
hand_02.txt AC 74 ms 18388 KB
hand_03.txt AC 75 ms 18260 KB
hand_04.txt AC 75 ms 19028 KB
hand_05.txt AC 74 ms 21460 KB
hand_06.txt AC 74 ms 17876 KB
hand_07.txt AC 73 ms 21460 KB
sample_01.txt AC 73 ms 18644 KB
sample_02.txt AC 74 ms 20948 KB
test_01.txt AC 75 ms 20052 KB
test_02.txt AC 74 ms 19412 KB
test_03.txt AC 74 ms 21332 KB
test_04.txt AC 73 ms 21460 KB
test_05.txt AC 75 ms 21204 KB
test_06.txt AC 74 ms 21460 KB
test_07.txt AC 74 ms 20820 KB
test_08.txt AC 74 ms 18644 KB
test_09.txt AC 75 ms 24916 KB
test_10.txt AC 72 ms 18132 KB
test_11.txt AC 75 ms 19668 KB
test_12.txt AC 75 ms 19412 KB
test_13.txt AC 73 ms 21332 KB
test_14.txt AC 74 ms 19668 KB
test_15.txt AC 73 ms 18260 KB
test_16.txt AC 74 ms 21332 KB
test_17.txt AC 336 ms 46824 KB
test_18.txt AC 278 ms 50252 KB
test_19.txt AC 271 ms 44804 KB
test_20.txt AC 290 ms 48300 KB
test_21.txt AC 147 ms 29796 KB
test_22.txt AC 115 ms 24916 KB
test_23.txt AC 148 ms 30084 KB
test_24.txt AC 172 ms 37488 KB
test_25.txt AC 142 ms 29844 KB
test_26.txt AC 159 ms 37956 KB
test_27.txt AC 147 ms 31584 KB
test_28.txt AC 233 ms 43400 KB