#include <iostream>
#include <algorithm>
#include <iomanip>
#include <math.h>
#include <string>
#include <string.h>
#include <vector>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <queue>
#include <bitset>
#include <list>
#define ll long long
#define pii pair<int,int>
#define ull unsigned long long
using namespace std;
int main() {
int n,m;
cin >> n >> m;
ll b[n+1];
for(int i =1; i<=n; i++) {
cin >> b[i];
}
using pp = pair<int,vector<int>>;
vector<pp> vec;
vec.resize(m+1);
for(int i = 1; i<=m; i++) {
int kind,x,y;
cin >> kind >> x >> y;
vec[i].first = kind;
vec[i].second.push_back(x);
vec[i].second.push_back(y);
}
reverse(vec.begin()+1,vec.end());
for(int i = 1; i<=m; i++) {
int kind,x,y;
kind = vec[i].first;
x= vec[i].second[0];
y = vec[i].second[1];
if(x!=y) {
if(kind == 1) {
b[x] = b[x]-b[y];
} else {
b[x] = b[x] / b[y];
}
}else{
b[x] = sqrt(b[x]);
}
}
for(int i =1;i<=n;i++){
cout << b[i] << " ";
}
return 0;
}