const readline = require("readline");
const rl = readline.createInterface(process.stdin, process.stdout);

class Node {
    previous;
    value;
    next;
}

class LinkList {
    head;
    length;
    constructor(length) {
        // 还是需要头结点，此时head表示其中第0个结点，length必须大于0
        this.length = length;
        this.head = new Node();
        // this.head.value = 1;
        let current, previous = this.head;
        for (let i = 1; i <= this.length; i++) {
            current = new Node();
            current.value = i;
            previous.next = current;
            current.previous = previous;
            previous = current;
        }
        current.next = this.head.next;
        this.head.next.previous = current;
        // this.head.next = this.current; // 不能多重赋值，赋值语句会返回undefined
        this.head.previous = current;
    }
    remove(node) {
        node.previous.next = node.next;
        node.next.previous = node.previous;
        // delete node; // JavaScript里应该无法直接删除
        this.length--;
        return true;
    }

    // 找到从当前结点开始第n个结点（可以为负数），当前结点是第0个
    // 并且再向后返回一个结点
    get_n_after_node(node, n) {
        let property_name = "next";
        if (n < 0) {
            property_name = "previous";
            n = -n;
        }
        if (this.length < 3) return false;
        for (let i = 0; i < n; i++) { // 向后走n个，例如从0开始，到3结束
            node = node[property_name];
        }
        return node;
    }
}

function main(people_num, num1, num2) {
    let link_list = new LinkList(people_num);
    let current = link_list.head;
    let temp;
    while (true) {
        temp = link_list.get_n_after_node(current, num1);
        if (!temp) break;
        current = temp;
        link_list.remove(current);
        temp = link_list.get_n_after_node(current, num2);
        if (!temp) break;
        current = temp;
        link_list.remove(current);
    }
    // 此时current是最后一个被删掉的结点，它的next和previous都是存在的结点
    current = current.next;
    link_list.head.next = current;
    for (let i = 0; i < link_list.length; i++) {
        console.log(current.value);
        current = current.next;
    }
}

function input(prompt) {
    return new Promise((resolve) => {
        rl.question(prompt, (answer) => {
            resolve(answer);
        });
    });
}

function visualize(dryrun, link_list) {
    if (dryrun) {
        return;
    }
    let result = {
        "kind": { "graph": true },
        "nodes": [
        ],
        "edges": [
        ]
    };
    let current = link_list.head.next;
    for (let i = 0; i < link_list.length; i++) {
        result.nodes.push({
            "id": String(i),
            "label": String(current.value)
        });
        current = current.next;
        result.edges.push({
            "from": String(i),
            "to": String(i + 1)
        });
    }
    result.edges[result.edges.length - 1].to = "0";
    return result;
}


async function main_() {
    visualize(true); // 不加这行可能它转化成Promise的时候不会放到闭包作用域里。
    people_num = parseInt(await input("输入人数"));
    num1 = parseInt(await input("输入第一个数字"));
    num2 = parseInt(await input("输入第二个数字"));
    main(people_num, num1, num2);
    rl.close();
}

main_()

// 输入人数10000
// 输入第一个数字123
// 输入第二个数字-654
// 1299
// 4114

// 输入人数99999
// 输入第一个数字-848
// 输入第二个数字-351
// 80178
// 23680