	#include <bits/stdc++.h>
	#define ll long long int
	#define db double
	#define pb push_back
	#define mpr make_pair
	#define andl "\n"
	#define f first
	#define s second
	#define mset(x,y) memset(x,y,sizeof(x))
	#define fr(i,n) for(long long int i=0;i<n;i++)
	#define trace(it,x) for(auto it = (x).begin(); it != (x).end(); it++)
	#define mod 1000000007
	#define fastio ios::sync_with_stdio (false); cin.tie (0); cout.tie (0);
	#define runtime cerr<< '\n' << "Time elapsed :" << clock() * 1000.0 / CLOCKS_PER_SEC << " ms\n" ;
	using namespace std;
	 
	// convert number to string to_string(x);
	// convert string to number stoi();
	 
	// ll mulmod(ll x,ll y)
	// {
	//     return ((x%mod)*(y%mod))%mod;
	// }
	 
	// ll ModInv(ll x, ll y)
	// {
	//     ll z = 1;
	//     while(y > 0)
	//     {
	//         if(y % 2 == 1)
	//             z = mulmod(z, x);
	//         x = mulmod(x, x);
	//         y /= 2;
	//     }
	//     return z;
	// }
	 
	// ll ncr(ll n,ll r)
	// {
	//     return mulmod(fact[n],ModInv(mulmod(fact[n-r],fact[r]),mod-2));
	// }
	 
	// ll pwr(ll n,ll m)
	// {
	//   if(n==1 || m==0)
	//     return 1;
	 
	//   ll x=pwr(n,m/2);
	//   if(m%2==0)
	//     return x*x;
	//   else
	//     return n*x*x;
	// }
	 
	// ll pwr(ll n,ll m,ll b)
	// {
	//   if(n==1 || m==0)
	//     return 1;
	 
	//   ll x=pwr(n,m/2,b);
	//   if(m%2==0)
	//     return ((x%b)*(x%b))%b;
	//   else
	//     return ((n%b)*(((x%b)*(x%b))%b))%b;
	// }
	 
	void solve()
	{
		ll a,b,k;
		cin >> a >> b >> k;

		ll dp[31][31];

		fr(i,31)
		fr(j,31)
		{
			if(i==0 || j==0)
				dp[i][j]=1;
			else
				dp[i][j]=dp[i-1][j]+dp[i][j-1];
		}

		string s;

		while(a>0 && b>0)
		{
			if(dp[a-1][b]>=k)
				a--,s+='a';
			else
			{
				k-=dp[a-1][b];
				b--;
				s+='b';
			}
		}

		while(a--)
			s+='a';
		while(b--)
			s+='b';

		cout << s;

	  return ;
	}
	 
	int main()
	{
	  fastio
	  
	  ll t=1;
	  // cin >> t;
	 
	  while(t--)
	    solve();
	 
	  runtime
	}
#include <bits/stdc++.h>
using namespace std;
typedef signed long long ll;

#define _P(...) (void)printf(__VA_ARGS__)
#define FOR(x,to) for(x=0;x<(to);x++)
#define FORR(x,arr) for(auto& x:arr)
#define FORR2(x,y,arr) for(auto& [x,y]:arr)
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
template<class T> bool chmax(T &a, const T &b) { if(a<b){a=b;return 1;}return 0;}
template<class T> bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;}
//-------------------------------------------------------

template<class V, int ME> class BIT {
public:
	V bit[1<<ME];
	V operator()(int e) {if(e<0) return 0;V s=0;e++;while(e) s+=bit[e-1],e-=e&-e; return s;}
	void add(int e,V v) { e++; while(e<=1<<ME) bit[e-1]+=v,e+=e&-e;}
};
BIT<ll,21> bt;
int N;
int A[606060];

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	ll ret=0;
	FOR(i,N) {
		cin>>A[i];
		ret+=bt(N)-bt(A[i]);
		bt.add(A[i],1);
	}
	FOR(i,N) {
		cout<<ret<<endl;
		ret-=A[i];
		ret+=N-1-A[i];
	}
	
}


int main(int argc,char** argv){
	string s;int i;
	if(argc==1) ios::sync_with_stdio(false), cin.tie(0);
	FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
	cout.tie(0); solve(); return 0;
}
