import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N,M;
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
for(int i = 0; i < N; i++) // 1부터 시작한다.
arr[i] = i + 1;
for(int z = 0; z < M; z++)
{
StringTokenizer st1 = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st1.nextToken()) - 1;
int j = Integer.parseInt(st1.nextToken()) - 1;
//System.out.printf("%d %d\n", i, j);
if (i != j) // 숫자가 같은 경우 비트연산자 swap하면 0이 된다
{
arr[i] = arr[i]^arr[j];
arr[j] = arr[j]^arr[i];
arr[i] = arr[i]^arr[j];
}
}
for(int i = 0; i < arr.length; i++)
System.out.printf("%d ", arr[i]);
}
}
비트연선자로 swap연산을 하게 되는 경우 굉장히 빠르지만 같은 숫자끼리 바뀔 경우에 0이 된다.