#include <iostream>
#include <vector>
#include <string>

using namespace std;

int swap(int nowAt, int a, int b) {
    if (a == nowAt) {
        return b;
    }
    if (b == nowAt) {
        return a;
    }

    return nowAt;
}

vector<string> split(const string &s, char delim) {
    vector<string> elems;
    string item;
    for (char ch: s) {
        if (ch == delim) {
            if (!item.empty())
                elems.push_back(item);
            item.clear();
        }
        else {
            item += ch;
        }
    }
    if (!item.empty())
        elems.push_back(item);
    return elems;
}

int main() {
    int w, n, i, ii, nowAt;

    cin >> w >> n;

    int results[w];

    // ルートの読み込み
    int routes[n][2];
    for (i = 0; i < n; i++) {
        string buffer;
        cin >> buffer;

        vector<string> splitted = split(buffer, ',');
        routes[i][0] = stoi(splitted[0]);
        routes[i][1] = stoi(splitted[1]);
        vector<string>().swap(splitted); // メモリの解放
    }

    // それぞれあみだくじをやる
    for (i = 0; i < w; i++) {
        nowAt = i+1; // 最初の位置

        // あみだの全節を通る
        for (ii = 0; ii < n; ii++) {
            nowAt = swap(nowAt, routes[ii][0], routes[ii][1]);
        }

        results[nowAt-1] = i + 1;
    }

    for(int goal : results) cout << goal << endl;
}
