Go: package main

import (
	"fmt"
)

func main() {
	var n int // こま数

	_, _ = fmt.Scan(&n)

	xa := make([]int, n) // こま座標

	for i:= 0;i < n ; i++ {
		_, _ = fmt.Scan(&xa[i])
	}

	var m int // 操作数

	_, _ = fmt.Scan(&m)

	ma := make([]int, m) // 操作対象

	for i:= 0;i < m ; i++ {
		_, _ = fmt.Scan(&ma[i])
	}

	for _, v := range calc(xa, ma) {
		fmt.Println(v)
	}
}

func calc(xa []int, ma []int) []int {
	for _, v := range ma {
		if xa[v-1] < 2019 {
			if  len(xa) != v {
				if xa[v]-1 != xa[v-1] {
					xa[v-1]++
				}
			} else {
				xa[v-1]++
			}
		}
	}
	return xa
}

C++: # include<iostream>
using namespace std;
# define N 1000
int main(){
    int n; cin >> n;
    int x[N]; for(int i=0; i<n; i++) cin >> x[i];
    int M; cin >> M;
    int y[N]; for(int i=0; i<M; i++) {cin >> y[i]; y[i]--;}

        for(int i=0; i<M; i++){
            if(x[y[i]] != 2019){
                if(x[y[i]+1] != x[y[i]]+1) x[y[i]] = x[y[i]]+1;
                //else x[y[i]] = x[y[i]];
            }
        }
    for(int i=0; i<n; i++) cout << x[i] << "\n";
    return 0;
}

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

int main() {
  int n;
  cin >> n;
  int x[n];
  bool p[2100] = {false};
  map<int, int> x_map;
  int i;
  for (i = 0; i < n; i++) {
    cin >> x[i];
    p[x[i]] = true;
    x_map[i + 1] = x[i];
  }
  int m;
  cin >> m;
  int a[m];
  for (i = 0; i < m; i++) {
    cin >> a[i];
  }
  for (i = 0; i < m; i++) {
    if (p[x_map[a[i]] + 1] == false && x_map[a[i]] != 2019) {
      p[x_map[a[i]] + 1] = true;
      p[x_map[a[i]]] = false;
      x_map[a[i]]++;
    }
  }
  for (i = 0; i < 2020; i++) {
    if (p[i]) {
      cout << i << endl;
    }
  }
  return 0;
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <cmath>
#include <iomanip>
#include <algorithm>
#define lint long long int
#define FOR(x, to) for(int x=0; x<(to); x++) // for簡略表記
#define DUMP(ar) for(int i=0; i<ar.size(); i++) cout << "[" << i << "]:" << ar[i] << endl // 配列一覧表示
#define DUMPL(ar) for(unsigned int i=0; i<ar.size(); i++) { cout << ar[i]; if(i<ar.size()-1) cout << ' '; } cout << endl; // 配列一行一覧表示"
#define COUT(x) cout << x << endl // 単要素出力
#define ALL(ar) ar.begin(), ar.end() // コンテナの全要素
#define LOOPD(i) cout << "ループ[" << i << "]回目---------------" << endl // ループ回数デバグ
using namespace std;
// cout << fixed << setprecision(4) で小数点以下4桁の桁そろえ
// cout << setw(5) << ... で表示形式を5桁に設定 5桁未満なら頭に空白がつく 5桁越なら先頭から5桁まで
// cout << setw(5) << setfill('0') << ... で空白部分の埋め文字に5を使う
// goto ANSWER; で最後へ飛ぶ
// getline(cin, [変数]); で空白など(ホワイトスペース)を含む入力
// cin >> ws; でそこまでに入力ストリームに残されたホワイトスペースを取り除く(=以降のgetlineの有効化)

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    int n, m;
    cin >> n;
    vector<int> x(n);
    FOR(i, n) cin >> x[i];
    cin >> m;
    vector<int> a(m);
    FOR(i, m) cin >> a[i];
    
    for(int i=0; i<m; i++){
        int place = x[a[i]-1] + 1;
        if(place >= 2020) continue;
        bool flag = true;
        for(int i=0; i<n; i++){
            if(x[i] == place){
                flag = false;
                break;
            }
        }
        if(flag) x[a[i]-1] += 1;
    }

    for(int i=0; i<n; i++){
        cout << x[i] << endl;
    }

    return 0;
}

C++: #include<stdio.h>

int main(){
    int n;//xの数
    int x[10000];//元の位置
    int m;//aの数
    int a[10000];//移動させるこまが何番目のものであるか
    
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf(" %d",&x[i]);
    }
    scanf("%d",&m);
    for(int i=0;i<m;i++){
        scanf(" %d",&a[i]);
        a[i]--;
    }

    for(int i=0;i<m;i++){
        if(x[a[i]]==2019){
            continue;
        }
        if(a[i]+1<n&&x[a[i]+1]==x[a[i]]+1){
		    continue;
        }
		x[a[i]]++;
    }

    for(int i=0;i<n;i++){
        printf("%d\n",x[i]);
    }
    return 0;
}

C++: #include <cstdlib>
#include <iostream>

using namespace std;

const int LIMIT = 2019;

int n; //駒数
int x[101]; //各コマの状態
int m; //操作回数
//int a[101]; //操作対象

void object_move(int object_num){
    int tgt_pos = x[object_num] + 1;
    if(tgt_pos > LIMIT){
        return;
    }

    for(int i=0; i<m; i++){
        if(x[i] == tgt_pos){
            if(i != object_num){
                return;
            }
        }
    }

    x[object_num] += 1;
}

int main(){

    cin >> n;
    for(int i=0; i<n; i++){
        cin >> x[i];
    }
    cin >> m;
    for(int i=0; i<m; i++){
        int a;
        cin >> a;
        object_move((a-1));
    }


    for(int i=0; i<n; i++){
        cout << x[i] << endl;
    }

    return 0;

}

C++: #include<bits/stdc++.h>
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define int long long
#define vec(a,n) vector<int> (a)((n));
#define Vec(a,n) vector<string> (a)((n));
#define twovec(a,n,m) vector<vector<int>> a(n,vector<int>(m,0));
#define Twovec(a,n,m) vector<vector<double>> a(n,vector<double>(m,0));
#define P pair<int,int>
#define All(a) (a).begin(),(a).end()
#define Sort(a) sort(All(a));
#define Reverse(a) reverse(All(a));
#define PQ(n) priority_queue<P,vector<P>,greater<P>> (n)
#define pq(n) priority_queue<int> (n)
#define print(a) cout << (a) << endl;
#define printD(a) cout << setprecision(6) << (a) << endl;
using namespace std;
int max_int = 1000000007;
void Debug(auto a);
int nibul(auto a,auto b);
int nibuu(auto a,auto b);
void input(vector<int>& a,int n);

int n;

signed main(){
    cin >> n;
    vec(a,n);
    REP(i,n){
        cin >> a[i];
    }
    int m;
    cin >> m;
    REP(i,m){
        int t;
        cin >> t;
        if(t==n && a[n-1]<2019){
            a[n-1]++;
        }
        else if(t!= n && a[t]-a[t-1]>1){
            a[t-1]++;
        }
    }
    REP(i,n){
        cout << a[i] << endl;
    }
    return 0;
}

void Debug(auto a){
    cout << "{ ";
    for(auto b: a){
        cout << b << " ";
    }
    cout << "}" << endl;
}
int nibul(auto a,auto b){
    int x = lower_bound(All(a),b) - a.begin();
    //key以上の初めてのitr
    return x;
}
int nibuu(auto a,auto b){
    int x = upper_bound(All(a),b) - a.begin();
    //key以下の最後のitr
    return x-1;
}

void input(vector<int>& a,int n){
    REP(i,n){
        cin >> a[i];
    }
}

C++: #include <bits/stdc++.h>
using namespace std;

typedef long long int ll;
ll MOD = 1000000007;
ll INFL = 1ll << 60;
ll INF = 1 << 28;

// ====================================================================

int main() {
  vector<int> v(2020);

  int n, x;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x;
    v[x] = i;
  }

  int m, a;
  cin >> m;
  for (int i = 0; i < m; i++) {
    cin >> a;
    int t = 0;
    while (v[t] != a && t < 2020) t++;
    if (t == 2019 || v[t + 1]) continue;
    v[t + 1] = v[t];
    v[t] = 0;
  }

  for (int i = 1; i <= n; i++) {
    int t = 0;
    while (v[t] != i && t < 2020) t++;
    cout << t << endl;
  }
}

C++: #include <iostream>
using namespace std;
int main(void){
    // Your code here!
    int N,X[100],M,A[100];
    cin>>N;
    for(int i=0;i<N;i++){
        cin>>X[i];
    }
    cin>>M;
    for(int i=0;i<M;i++){
        cin>>A[i];
    }
    for(int i=0;i<M;i++)
    if(X[A[i]-1]+1==X[A[i]]||X[A[i]-1]==2019){
        
    }else{
        X[A[i]-1]++;
    }
    for(int i=0;i<N;i++){
        cout<<X[i]<<endl;
    }
}

C++: #include <bits/stdc++.h>

using namespace std;

int main() {
  int n; cin >> n;
  vector<int> grid(n);
  for(int i=0;i<n;++i) cin >> grid[i];
  int m,a; cin >> m;
  for(int i=0;i<m;++i){
    cin >> a; a--;
    if(grid[a]+1!=grid[a+1] && grid[a]!=2019) grid[a]++;
  }
  for(int i=0;i<n;++i)
    cout << grid[i] << endl;

  return 0;
}