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 <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef vector<long long> VLL;
typedef vector<pair<int,int>> VP;
#define INF (int)(1e9)
#define MAXX 1.1529215e+18
#define inf 999999
#define EPS (1e-7)
#define MOD (1e9+7)
#define rep(i,n) for(int i=0; i<(int)(n);i++)
#define REP(i,n) for(int i=1;i<=(int)(n);i++)
#define FOR(i,k,n) for(int i=(k);i<(int)(n);i++)
#define ALL(a)  a.begin(),a.end()
#define RALL(a) a.begin(),a.end(),greater<int>()
#define ROT(a) a.begin(),a.begin()+1,a.end()
#define RROT(a) a.begin(),a.end()-1,a.end()
#define PB push_back
#define MP make_pair
#define PI acos(-1.0)

int main(){
    int N;
    cin >> N;
    vector<int> x(N+1);
    rep(i,N) cin >> x[i];
    x[N] = 2020;
    
    int M;
    cin >> M;
    int a;
    rep(i,M){
        cin >> a;
        if(x[a] > x[a-1] + 1) x[a-1] = min(x[a-1] + 1, 2019);
    }
    
    rep(i,N) cout << x[i] << endl;
    
    
}

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

int main(){
    int n, m;
    bool board[2020] = {0};
    int x[101];
    cin >> n;
    for(int i=1;i<=n;i++){
        cin >> x[i];
        board[x[i]] = true;
    }
    cin >> m;
    for(int i=0;i<m;i++){
        int a;
        cin >> a;
        if(x[a]==2019 || board[x[a]+1]) continue;
        x[a]++;
        board[x[a]] = false;
        board[x[a]+1] = true;
    }

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

C++: #include<iostream>
#include<vector>
#include<algorithm>
#include<cctype>
#include<utility>
#include<string>
#include<cmath>
#include<cstring>
#include<queue>
#include<map>

#define REP(i, n) for(int i = 0;i < n;i++)
#define REPR(i, n) for(int i = n;i >= 0;i--)
#define FOR(i, m, n) for(int i = m;i < n;i++)
#define FORR(i, m, n) for(int i = m;i >= n;i--)
#define SORT(v, n) sort(v, v+n);
#define VSORT(v) sort(v.begin(), v.end());
#define llong long long
#define pb(a) push_back(a)
using namespace std;
typedef pair<int, int> P;
typedef pair<llong, llong> LP;
typedef pair<int, P> PP;
typedef pair<llong, LP> LPP;
typedef long long int ll;

template<typename T>
vector<T> make_v(size_t a) { return vector<T>(a); }
template<typename T, typename... Ts>
auto make_v(size_t a, Ts... ts) {
	return vector<decltype(make_v<T>(ts...))>(a, make_v<T>(ts...));
}
template<typename T, typename V>
typename enable_if<is_class<T>::value == 0>::type
fill_v(T& t, const V& v) { t = v; }
template<typename T, typename V>
typename enable_if<is_class<T>::value != 0>::type
fill_v(T& t, const V& v) {
	for (auto& e : t) fill_v(e, v);
}


#define ARRAY_MAX 3005
const int INF = 1e9 + 7;

int used[ARRAY_MAX];

int main() {

	int n, m;
	cin >> n;
	auto a = make_v<int>(n + 10);
	fill_v(a, 0);

	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		used[a[i]] = 1;
	}

	cin >> m;

	for (int i = 0; i < m; i++)
	{
		int tmp;
		cin >> tmp;
		if (a[tmp] + 1 <= 2019)
		{
			if (used[a[tmp] + 1] == 0)
			{
				used[a[tmp]] = 0;
				used[a[tmp] + 1] = 1;
				a[tmp]++;
			}
		}
	}

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

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

using namespace std;

typedef long long int ll;
typedef pair<int,int> P;

#define rep(i,n) for(int i=0;i<(n);++i)
#define repi(i,a,b) for(int i=int(a);i<(b);i++)
#define all(x) x.begin(),x.end()

const ll mod = 1e9+7;
const ll INF = 1e9;

ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

int main()
{
	int n;
	cin>>n;
	vector<int> x(n);
	rep(i,n)cin>>x[i];
	int m;
	cin>>m;
	vector<int> a(m);
	rep(i,m)cin>>a[i];

	vector<int> s(2020,-1);
	rep(i,n) s[x[i]] = i;
	rep(i,m){
		int koma = x[a[i]-1];
		if(s[koma+1]== -1){
			s[koma]=-1;
			s[koma+1]=a[i]-1;
			x[a[i]-1]++;
		}
	}
	rep(i,n)cout<<x[i]<<endl;

	return 0;
}

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

#define int long long
#define all(V) (V).begin(),(V).end()
#define umap unordered_map
#define uset unordered_set
#define br cout<<"\n";

const int MAXN=1e5+10, MOD=1e9+7;
int n,m;


signed main()
{
//	#ifndef ONLINE_JUDGE
//		freopen("./input.txt","r",stdin);
//		freopen("./output.txt","w",stdout);
//	#endif
	ios::sync_with_stdio(false); cin.tie(nullptr);
    cin>>n;
    int arr[n+1];
    for(int i=1; i<=n; i++){
        cin>>arr[i];
    }
    cin>>m;
    for(int i=1; i<=m; i++){
        int idx; cin>>idx;
        if(arr[idx]+1>2019) continue;
        if( arr[idx]+1==arr[idx+1]) continue;
        arr[idx]++;
    }
    for(int i=1; i<=n; i++){
        cout<< arr[i]; br;
    }
}

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

int main()
{
	int x[2020];
	for (int i = 0; i < 2020; i++) {
		x[i] = 2020;
	}
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		int xx;
		cin >> xx;
		x[i] = xx;
	}
	int m;
	cin >> m;
	for (int i = 0; i < m; i++) {
		int yy;
		cin >> yy;
		if (x[yy + 1] != x[yy] + 1) {
			x[yy]++;
		}
	}
	for (int i = 1; i <= n; i++) {
		cout << x[i] << endl;
	}
}

C++: #include<iostream>
#include<stdio.h>
#include<string>
#include <algorithm>
#include<cstring>
#include <math.h>
#include <iomanip>
using namespace std;

int main()
{
  int n;
  int x[2019];
  int m;
  int a;

  cin>>n;
  for(int i=0;i<n;i++)
    cin>>x[i];
  cin>>m;
  for(int i=0;i<m;i++){
    cin>>a;
    a=a-1;
    int num=1;
    for(int j=0;j<n;j++){ 
      if((x[a]+1)==x[j]){
	num=0;
      }
    }
    if(x[a]!=2019){
      x[a]+=num;
    }
  }
  for(int i=0;i<n;i++){
    cout<<x[i]<<endl;
  }
  return 0;
}

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

int main() {

int N , M ;

cin >> N ; 			// 駒の数をNに読み込む
int koma[N + 1] ; 		// 駒の座標を記録するN+1個の配列を用意し、0で初期化。koma[0]は、混乱防止のため使わない（欠番）とする。


	// N個の駒の座標を、配列に読み込む
	int i = 0 ;
	
	for( i = 1 ; i <= N ;){
	cin >> koma[i] ;
	i = i + 1 ;
	}
	

cin >> M ; 			// 操作回数の読み込み


	//駒の操作
	int koma_index_number = 0 ;	// 操作すべき駒の番号に使う変数
	
	while( 0 < M ){
	cin >> koma_index_number ;
	
	    if( koma[koma_index_number] + 1 == koma[koma_index_number + 1 ] ){	// 移動先のマスに別の駒が置かれているかの判定。
	    // 移動先のマスに別の駒が置かれている場合、何もしない。
	    }else{
		    if( 2019 < koma[koma_index_number] + 1 ){
		    // 移動先のマスの座標が2019より大きい場合、何もしない。
		    }else{
		    koma[koma_index_number] = koma[koma_index_number] + 1 ;		// 邪魔がない場合は、駒の座標を1進める。
		    }
		}
	M = M - 1 ;
	}



    // 座標の出力
	for( i = 1 ; i <= N ; ){
	cout << koma[i] <<endl ;
	i = i + 1 ;
	}
	


	

}

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

int main(void){

    int n,m;
    cin >> n;
    int x[n];
    for(int i=0;i<n;i++){
        cin >> x[i];
    }
    cin >> m;
    int a[m];
    for(int i=0;i<m;i++){
        cin >> a[i];
        bool ck = true;
        if(x[a[i]-1]<2019){
            for(int j=0;j<n;j++){
                if(x[a[i]-1]+1==x[j]){
                    ck = false;
                    break;
                }
            }
            if(ck) x[a[i]-1] = x[a[i]-1]+1;
        }
    }
    
    for(int i=0;i<n;i++){
        cout << x[i] << endl;
    }
}