// pra.cpp
// version 1
//
// Autor: Jakub Chmist
// Utworzony 22.11.2017.
#include<iostream>
//#include<cstdlib>
//#include<cmath>
//#include <set>
#include <vector>
#include <algorithm>
//#include <iterator>
using namespace std;
vector <int> t_pomiary;
vector < vector <int> > t_analiza;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, m; //n - ilosc pomiarow, m - ilosc dzieci w klasie
vector<pair<int, int>> t_zmiany;
cin >> n >> m;
int pomiar;
//Wczytuje pomiary
for (int i = 0; i < n; i++){
cin >> pomiar;
t_pomiary.push_back(pomiar);
}
pomiar = 1; //nr pierwszego ucznia
t_pomiary.push_back(pomiar);
int nr_pomiaru, wartosc;
//Wczytuje zmiany do wektora par
for ( int i = 0; i < m - 1; ++i ){
cin >> nr_pomiaru >> wartosc;
t_zmiany.push_back(make_pair(nr_pomiaru, wartosc));
}
//Wypelniam kontener z wszystkimi wynikami i nr ucznia na koncu
//dla pierwszego ucznia
t_analiza.push_back(t_pomiary);
//dla pozostalych uczniow
for (int j = 1; j < m; j++){
t_pomiary[t_zmiany[j-1].first - 1] = t_zmiany[j-1].second;
t_pomiary[n] = j + 1;
t_analiza.push_back(t_pomiary);
}
//Sortuje wektor wektorow
sort (t_analiza.begin(), t_analiza.end());
//Wypisuje ostatnie pole (nr ucznia) z posortowanego wektora wektorow
for (int i = 0; i < m; i++){
cout << t_analiza[i][n] << " ";
}
cout << "\n";
return 0;
}