Go: package main

import (
	"bufio"
	"os"
	"strconv"
	"fmt"
	"strings"
)

var scanner = bufio.NewScanner(os.Stdin)

func nextInt() int {
	scanner.Scan()
	i, e := strconv.Atoi(scanner.Text())
	if e != nil {
		panic(e)
	}
	return i
}

func nextString() string {
	scanner.Scan()
	return scanner.Text()
}

func swap(ints []int, i, j int) {
	ints[i], ints[j] = ints[j], ints[i]
}

func main() {
	w := nextInt()
	// println(w)
	nums := make([]int, w)
	for i := range nums {
		nums[i] = i+1
	}
	n := nextInt()
	// println(n)
	for i := 0; i < n; i++ {
		info := nextString()
		// println(info)
		infos := strings.Split(info, ",")
		a, _ := strconv.Atoi(infos[0])
		b, _ := strconv.Atoi(infos[1])
		swap(nums, a-1, b-1)
	}
	for _, v := range nums {
		fmt.Println(v)
	}
}

C++: #include <iostream>
using namespace std;
int main() {
    int line;
    int side;
    int sidenum1,sidenum2;
    int linenum[line];
    char waste;
    cin>>line>>side;
    for(int i=0; i<line; i++){
        linenum[i]=i+1;
    }
    for(int i=0; i<side; i++){
        cin>>sidenum1>>waste>>sidenum2;
        swap(linenum[sidenum1-1],linenum[sidenum2-1]);
    }
    for(int i=0; i<line; i++){
        cout<<linenum[i]<<endl;
    }
    return 0;
}

C++: #include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <fstream>
#include <sstream>
#include <string>
#include <iomanip>
#include <math.h>
#include <limits>
#include <chrono>

using namespace std;

class amida
{
	int w;
	vector<int> va;
public:
	amida(int _w) : w(_w){
		for(int i = 0; i < w; i++){
			va.push_back(i);
		}
	}
	void swap(int, int);
	void output();
};

void amida::swap(int a1, int b1)
{
	int temp = va[a1-1];
	va[a1-1] = va[b1-1];
	va[b1-1] = temp;
}

void amida::output()
{
	for(int i = 0; i < w; i++)
		cout << va[i]+1 << '\n';
}

int main()
{
	int w, n;
	int a1, b1;
	cin >> w;
	amida am(w);
	cin >> n;
	for(int i = 0; i < n; i++){
		string str;
		cin >> str;
		const char* chtemp = str.c_str();
		char *ct;
		a1 = atoi(strtok_s((char*)chtemp, ",", &ct));
		b1 = atoi(strtok_s(NULL, ",", &ct));
		am.swap(a1, b1);
	}
	am.output();

	return 0;
}

C++: #include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int main()
{
	int w,n,i;
	cin >> w; cin >> n;
	int vertical_bar[w];
	// 配列を初期化
	for(i=0;i<w;i++){
		vertical_bar[i] = i+1;
	}
		
	for(i=0;i<n;i++){
		int a,b;
		scanf("%d, %d", &a,&b);
		swap(vertical_bar[a-1], vertical_bar[b-1]);
	}
	
	for(i=0;i<w;i++){
		cout << vertical_bar[i] <<endl;
	}
	
	return 0;
}

C++: #include <iostream>
using namespace std;

int main(){
	int end[35];
	for(int i = 1;i<=30;i++)
		end[i]= i;
	int w;
	int n;
	
	cin >> w;
	cin >> n;
	for(int i = n; i<=n;i++){
		int a,b;
		char c;
		cin >> a;
		cin >> c;
		cin >> b;
		int temp = end[b];
		end[b]=end[a];
		end[a]=temp;
	
	}
	for(int i = 1;i<=w;i++)
		cout << end[i] << endl;
		
	return 0;
}

C++: 
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <numeric>
#include <cmath>
using namespace std;
typedef vector<int> VI;
#define REP( i, m, n ) for ( int i = (int)( m ); i < (int)( n ); ++i )

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int vertical;
    int horizon;
    
    cin >> vertical;
    cin >> horizon;
    
    vector<int> numbers;
    REP(i, 0, vertical) {
        numbers.push_back(i+1);
    }
    
    REP(i, 0, horizon) {
        int sa, sb;
        char comm;
        cin >> sa >> comm >> sb;
        swap(numbers[sa-1], numbers[sb-1]);
    }

    REP(i, 0, vertical) {
        cout << numbers.at(i) << endl;
    }

    return 0;
}

C++: #include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int main(){
    int a[100]={},w,n,a,b,i;
    cin >> w;
    for(i=1;i<=w;i++){
        a[i] = i;
    }
    cin >> n;
    for(i=1;i<=n;i++){
        scanf("%d,%d",&a,&b);
        swap(a[a],a[b]);
    }
    for(int i=1;i<=w;i++){
        cout << a[i] << endl;
    }
    return 0;
}

C++: #include <iostream>
#include <vector>
#include <cstdio>
using namespace std;

int main(){
	int w, n, i, tmp, a, b;
	cin>>w;
	cin>>n;
	vector<int> vw(w);
	vector<vector<int> > vn(n, vector<int>(2));
	for(i=0;i<w;i++) vw[i] = i+1;
	for(i=0;i<n;i++){
		scanf("%2d,%2d",&a, &b);
		vn[i][0] = a-1;
		vn[i][1] = b-1;
		
		tmp = vw[(vn[i][0])];
		vw[(vn[i][0])] = vw[(vn[i][1])];
		vw[(vn[i][1])] = tmp;
	}
	for(i=0;i<w;i++) cout << vw[i] << endl;
	return 0;
}

C++: #include<iostream>

int main(){
	
	char a;
	int w,n,tate[30],b,c,d,i;

	std::cin>>w;
	for(i=1;i<=w;i++){
		tate[i]=i;
		}
	std::cin>>n;
	
	for(i=0;i<n;i++){
		std::cin>>b>>a>>c;
		d=tate[b];
		tate[b]=tate[c];
		tate[c]=d;
		}
		
	for(i=1;i<=w;i++){
		std::cout<<tate[i]<<std::endl;
		}

	return 0;
	
	}

C++: #include<iostream>
#include<vector>
#include<string>
int main(){
	int w,h;
	std::cin>>w>>h;
	std::vector<int> vec(w);
	for(int i=0;i<w;++i)vec[i]=i+1;
	for(int i=0;i<h;i++){
		std::string str;
		std::cin>>str;
		{
			char c=str[0],d=str[2];
			int a=c-'0'-1,b=d-'0'-1;
			int n=vec[a];
			vec[a]=vec[b];
			vec[b]=n;
		}
	}
	for(int i=0;i<w;i++){
		std::cout<<vec[i]<<std::endl;
	}
	return 0;
}

C++: #include <iostream>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <queue>
#include <algorithm>
#include <functional>

#define REP(i,n) for(int i=0; i<n; i++)
#define FOR(i,a,b) for(int i=a; i<=b; i++)
#define ll long long

using namespace std;


int main(void) {
    int n,w;
    string str;
    cin >> n >> w;
    vector<int> v(n);
    REP(i,n){
        v[i]=i+1;
    }
    REP(i,w){
        cin >> str;
        int a,b;
        a=str[0]-'0';
        b=str[2]-'0';
        REP(k,n){
            REP(l,n){
                if (v[k]==a && v[l]==b){
                    v[k] = b;
                    v[l] = a;
                    goto hoge;
                }
            }
        }
    hoge:;
    }
    vector<pair<int,int> > vp(n);
    REP(i,n){
        vp[i].first=v[i];
        vp[i].second=i+1;
    }
    sort(vp.begin(),vp.end());
    
    REP(i,n) cout << vp[i].second << endl;
    return 0;
}

C++: #include <iostream>

using namespace std;

int main()
{
    int w,n;
    scanf("%d", &w);
    scanf("%d", &n);
    int amida[w + 1];
    for(int i = 1; i <= w; i++) amida[i] = i;
    for(int i = 0; i < n; i++) {
        int a, b;
        scanf("%d,%d", &a, &b);
        swap(amida[a], amida[b]);
    }
    for(int i = 1; i <= w; i++) cout << amida[i] << endl;
    return 0;
}

C++: 
//http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0011&lang=jp

#include <algorithm>
#include <iostream>
#include <vector>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <math.h>
#include <iomanip>
#include <sstream>

using namespace std;

//テ」ツδ榲」ツつッテ」ツδュテ・ツョツ堙ァツセツゥ
#define ALL(v) (v).begin(),(v).end()
#define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array[0]))
#define REP(i,a,b) for(int i=(int)(a); i<(int)(b); ++i)
#define rep(i,n) for(int i=0;i<(int)(n);++i)
#define SORT(x) sort(begin(x),end(x))
#define SELECT_SORT(x, n) sort(begin(x),begin(x)+n)
#define SWAP(type, a, b) do {type tmp = a; a = b; b = tmp;} while (0)
#define rep_split(tok,a_str,re) for(char *tok = strtok((char *)a_str.c_str(),re); tok != NULL; tok = strtok(NULL,re))

//テ・ツョツ堙ヲツ閉ー
#define INF 2000000000000
#define MAX 10

//DEBUGテァツ板ィ
#define BAR() cout << "----------------------------" << endl;
#define DUMP(v) (cerr << #v << ": " << v << endl)
#define PRINT(list) cout << "{ "; for(auto nth : list){ cout << nth << " "; } cout << "}" << endl;

vector<int> amida;


int main()
{
	int w=0;
	cin >> w;
	amida.push_back(0);
	REP(i,1,w+1){
		amida.push_back(i);
	}
	
	int n=0;
	cin >> n;
	int a,b=0;
	while(n){
		scanf("%d,%d",&a,&b);
		SWAP(int, amida[a], amida[b]);
		n--;
	}
	
	REP(i,1,w+1){
		cout << amida[i] << endl;
	}
	
}