#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
#define M 1000000007
typedef pair<lli,lli> ll;
#define mem(a,x) memset(a,x,sizeof(a))
string s;
lli n;
int main()
{
unordered_map<int,ll> m1;
map<int,int,greater<int>> m2;
int m;
cin>>n>>m;
int a[n];
lli p=n/m;
stack<int> v[m];
for(int j=0;j<n;j++)
{
    cin>>a[j];
    m1[a[j]%m].first++;
    m1[a[j]%m].second=j;
    v[a[j]%m].push(j);
}
for(auto it=m1.begin();it!=m1.end();it++)
{
    m2[it->second.first]=it->first;
}
lli c=0;
for(int j=0;j<=m-1;j++)
{
    while(m1[j].first<n/m)
    {
        lli d=min(abs(m2.begin()->second-j),abs(m-m2.begin()->second+j));
        a[v[m2.begin()->second].top()]+=d;
        v[m2.begin()->second].pop();
        c+=d;
        m1[m2.begin()->second].first--;
        m1[j].first++;
    }
}
cout<<c<<endl;
for(int j=0;j<n;j++)
{
    cout<<a[j]<<" ";
}
}


#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
#define M 1000000007
typedef pair<lli,lli> ll;
#define mem(a,x) memset(a,x,sizeof(a))
string s;
lli n;
map<lli,lli> m1;
int main()
{
lli m;
cin>>n>>m;
lli a[n];
lli p=n/m;
vector<lli> v;
for(lli j=0;j<n;j++)
{
    cin>>a[j];
    m1[a[j]%m]++;
    if(m1[a[j]%m]>p)
    {
        v.push_back(j);
        m1[a[j]%m]--;
    }
}
lli c=0;
lli d;
for(lli j=0;j<n;j++)
{
    if(m1[a[j]%m]<p)
    {
        if(a[v[0]]%m>a[j]%m)
        {
            d=m-a[v[0]]%m+a[j]%m;
        }
        else if(a[v[0]]%m<a[j]%m)
        d=a[j]%m-a[v[0]]%m;
        c+=d;
        m1[a[j]%m]++;
        a[v[0]]+=d;
        v.erase(v.begin());
    }
}
cout<<c<<endl;
for(lli j=0;j<n;j++)
cout<<a[j]<<" ";
}


#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
#define M 1000000007
typedef pair<lli,lli> ll;
#define mem(a,x) memset(a,x,sizeof(a))
string s;
lli n;
int main()
{
unordered_map<int,int> m1;
map<int,int,greater<int>> m2;
int m;
cin>>n>>m;
int a[n];
lli p=n/m;
stack<int> v[100007];
for(int j=0;j<n;j++)
{
    cin>>a[j];
    m1[a[j]%m]++;
    v[a[j]%m].push(j);
}
for(auto it=m1.begin();it!=m1.end();it++)
{
    m2[it->second]=it->first;
}
lli c=0;
for(int j=0;j<=m-1;j++)
{
    int flag=0;
    auto it=m2.begin();
    while(m1[j]<n/m)
    {
        lli d=min(abs(m2.begin()->second-j),abs(m-m2.begin()->second+j));
        while(v[it->second].size()<=n/m)
        it++;
        if(v[it->second].size()<=n/m)
        {
            flag=1;
            break;
        }
        a[v[it->second].top()]+=d;
        v[it->second].pop();
        c+=d;
        m1[it->second]--;
        m1[j]++;
    }
    if(flag)
    break;
}
cout<<c<<endl;
for(int j=0;j<n;j++)
{
    cout<<a[j]<<" ";
}
}


#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
#define M 1000000007
typedef pair<lli,lli> ll;
#define mem(a,x) memset(a,x,sizeof(a))
string s;
lli n;
int main()
{
unordered_map<int,int> m1;
map<int,int,greater<int>> m2;
int m;
cin>>n>>m;
int a[n];
lli p=n/m;
stack<int> v[m+1];
for(int j=0;j<n;j++)
{
    cin>>a[j];
    m1[a[j]%m]++;
    v[a[j]%m].push(j);
}
for(auto it=m1.begin();it!=m1.end();it++)
{
    m2[it->second]=it->first;
}
lli c=0;
for(int j=0;j<=m-1;j++)
{
    auto it=m2.begin();
    while(m1[j]<n/m)
    {
        lli d=min(abs(m2.begin()->second-j),abs(m-m2.begin()->second+j));
        while(v[it->second].size()<=n/m)
        it++;
        if(v[it->second].size()<=n/m)
        break;
        a[v[it->second].top()]+=d;
        v[it->second].pop();
        c+=d;
        m1[it->second]--;
        m1[j]++;
    }
}
cout<<c<<endl;
for(int j=0;j<n;j++)
{
    cout<<a[j]<<" ";
}
}


#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
#define M 1000000007
typedef pair<lli,lli> ll;
#define mem(a,x) memset(a,x,sizeof(a))
bool cmp(ll a,ll b)
{
    if(a.first==b.first)
    return a.second>b.second;
    return a.first<b.first;
}
float area(float x1,float y1,float x2,float y2,float x3,float y3)
{
    return abs((x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2.0);
}
bool check(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4,float x,float y)
{
    float a=area(x1,y1,x2,y2,x3,y3)+area(x1,y1,x4,y4,x3,y3);
    float a1=area(x1,y1,x2,y2,x,y);
    float a2=area(x2,y2,x3,y3,x,y);
    float a3=area(x3,y3,x4,y4,x,y);
    float a4=area(x1,y1,x4,y4,x,y);
    if(a==(a1+a2+a3+a4))
    return true;
    return false;
}
lli gcd(lli a,lli b)
{
    if(b==0)
    return a;
    return gcd(b,a%b);
}
string s;
lli n,c,d,k,l,r,x,y;
int b[100007];
int a[100007];
int main()
{
map<int,int> m1;
map<int,int,greater<int>> m2;
int m;
cin>>n>>m;
lli p=n/m;
for(int j=0;j<n;j++)
{
    cin>>a[j];
    m1[a[j]%m]++;
}
for(auto it=m1.begin();it!=m1.end();it++)
{
    m2[it->second]=it->first;
}
lli p1;
lli c=0;
for(int j=0;j<=m-1;j++)
{
    while(m1[j]<n/m)
    {
        m1[j]++;
        c+=min(abs(m2.begin()->second-j),abs(m-m2.begin()->second+j));
        m1[m2.begin()->second]--;
    }
}
cout<<c<<endl;
map<int,int> m3;
for(int j=0;j<n;j++)
{
    m3[a[j]%m]+=1;
    if(m3[a[j]%m]>n/m)
    {
        a[j]+=1;
        m3[a[j]%m]-=1;
    }
    cout<<a[j]<<" ";
}
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  if (viv&&ost[i]>sh)
    cout<<"I change "<<i<<endl;
  while (ost[i]>sh)
    {
    if (viv&&ost[i]<50000)
      cout<<ost[i]<<endl;
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l==103029)
      cout<<"Scha vivedu i wilechu"<<endl;
    if (viv&&l>=103025)
      cout<<l<<endl;
    if (viv&&l==103029)
      cout<<"Vse eto ti ne uvidish'"<<endl;
    if (viv&&l==103029)
      cout<<"chooooooo"<<endl;
    l++;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<endl;
    if (viv&&l>=103025)
      cout<<j<<' ';
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<endl;
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=105000)
      cout<<l;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l==103029)
      cout<<"Scha vivedu i wilechu"<<endl;
    if (viv&&l>=103025)
      cout<<l<<endl;
    if (viv&&l==103029)
      cout<<"Vse eto ti ne uvidish'"<<' ';
    if (viv&&l==103029)
      cout<<"chooooooo"<<' ';
    l++;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<' ';
    if (viv&&l>=103025)
      cout<<j<<' ';
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    cout<<"I change "<<i<<endl;
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;

void add()
{
if (!alr)
  for (long long i=0; i<k; i++)
    ost.push_back(ost[i]);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103010)
      cout<<l<<endl;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;
void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]=424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    if (viv)
      cout<<"I change "<<i<<endl;
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=500000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;

    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  if (viv&&ost[i]>sh)
    cout<<"I change "<<i<<endl;
  while (ost[i]>sh)
    {
    if (viv&&ost[i]<10)
      cout<<ost[i]<<endl;
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=500000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  {
  cout<<"Oh you, stop it"<<endl;
  return 0;
  }

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;

    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l==103029)
      cout<<"Scha vivedu i wilechu"<<endl;
    if (viv&&l>=103025)
      cout<<l<<endl;
    if (viv&&l==103029)
      cout<<"Vse eto ti ne uvidish'"<<endl;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<' ';
    l++;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<' ';
    if (viv&&l>=103025)
      cout<<j<<' ';
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=500000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (j==2*k)
      {
      cout<<"Remember, my friend, it's impossible"<<endl;
      return 0;
      }
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;

void add()
{
if (!alr)
  for (long long i=0; i<k; i++)
    ost.push_back(ost[i]);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

struct mine
{
  long long ost, v, i;
};

bool cmp (mine a, mine b)
{

if (a.ost<b.ost)
  return true;
if (a.ost>b.ost)
  return false;
if (a.v<b.v)
  return true;
if (a.v>b.v)
  return false;
if (a.i<b.i)
  return true;
if (a.i>=b.i)
  return false;
}

long long n,k,i,j;
vector <long long> m,ost,itog;
vector <pair <long long, long long> > nal[400000];
vector <mine> m1;
long long up[300000];

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  m1.push_back({a%k, a, i});
  nal[a%k].push_back({a, i});
  }

for (i=0; i<k; i++)
  ost.push_back(0);

for (i=0; i<n; i++)
  ost[m[i]%k]++;

for (i=0; i<k; i++)
  {
  long long lish=min((long long)0, ost[i]-n);
  for (long long j=0; j<lish; j++)
    {
    nal[(i+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+1)%k].back().first++;
    }
  }
/*
for (i=0; i<k; i++)
  {
  for (j=0; j<nal[i].size(); j++)
    cout<<nal[i][j].first<<' ';
  cout<<endl;
  }
*/
long long ans=0;
for (i=0; i<k; i++)
  {
  long long lish=max((long long)0, nal[i].size()-n/k);
  for (long long j=0; j<lish; j++)
    {
    ans+=(j/(n/k))+1;
    nal[(i+(j/(n/k))+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+(j/(n/k))+1)%k].back().first+=(j/(n/k))+1;
    }
  }

for (i=0; i<n; i++)
  itog.push_back(0);
for (i=0; i<k; i++)
  {
  for (long long j=0; j<nal[i].size(); j++)
    {
 //   cout<<i<<' '<<j<<' '<<nal[i][j].first<<' '<<nal[i][j].second<<endl;
    long long p=nal[i][j].second;
    itog[p]=nal[i][j].first;
    }
  }

cout<<ans<<endl;
for (i=0; i<n; i++)
  cout<<itog[i]<<' ';
cout<<endl;

/*
sort(m1.begin(), m1.end(), cmp);

long long otv=0;

for (i=0; i<n; i++)
  {
  long long z=(i/(n/k));
  long long add=z-m1[i].ost;
  if (add<0)
    add+=k;
  otv+=add;
  m1[i].v+=add;
  }

vector <long long> ans;
for (i=0; i<n; i++)
  ans.push_back(0);

for (i=0; i<n; i++)
  ans[m1[i].i]=m1[i].v;

cout<<otv<<endl;

for (i=0; i<n; i++)
  cout<<ans[i]<<' ';
cout<<endl;

*/

    return 0;

}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<1;
      cout<<l<<' '<<next<<endl;
      }
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<1;
      cout<<l<<endl;
      } l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=500000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss],work[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  }
long long sh=n/k;

for (i=0; i<k; i++)
    ost.push_back(0);
j=0;
for (auto i:m)
  {
  ost[i%k]++;
  work[i%k].push_back(i);
  num[i%k].push_back(j);
  j++;
  }

j=0;
for (i=0; i<k; i++)
  {
  while (work[i].size()>sh)
    {
    j=max(j, i);
    long long v=work[i].back();
    long long p=num[i].back();
    work[i].pop_back();
    num[i].pop_back();
    ost[i]--;
    while (ost[j]>=sh&&j<k)
      j++;
    if (j>=k)
      add();
    while (ost[j]>=sh)
      j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    work[j].push_back(v);
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  if (viv&&ost[i]>sh)
    cout<<"I change "<<i<<endl;
  while (ost[i]>sh)
    {
    if (viv&&ost[i]<1000)
      cout<<ost[i]<<endl;
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=500000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (ost[j]>=sh&&j<k)
      j++;
    if (j>=k)
      add();
    while (ost[j]>=sh)
      j++;

    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103025)
      cout<<l<<endl;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103025)
      cout<<l<<endl;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103025)
      cout<<l<<endl;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<' ';
    l++;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<' ';
    if (viv&&l>=103025)
      cout<<j<<' ';
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103025)
      cout<<l<<endl;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

struct mine
{
  long long ost, v, i;
};

bool cmp (mine a, mine b)
{

if (a.ost<b.ost)
  return true;
if (a.ost>b.ost)
  return false;
if (a.v<b.v)
  return true;
if (a.v>b.v)
  return false;
if (a.i<b.i)
  return true;
if (a.i>=b.i)
  return false;
}

long long n,k,i,j;
vector <long long> m,ost,itog;
vector <pair <long long, long long> > nal[400000];
vector <mine> m1;
long long up[300000];

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  m1.push_back({a%k, a, i});
  nal[a%k].push_back({a, i});
  }

for (i=0; i<k; i++)
  ost.push_back(0);

for (i=0; i<n; i++)
  ost[m[i]%k]++;

for (i=0; i<k; i++)
  {
  long long lish=min((long long)0, ost[i]-n);
  for (long long j=0; j<lish; j++)
    {
    nal[(i+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+1)%k].back().first++;
    }
  }
/*
for (i=0; i<k; i++)
  {
  for (j=0; j<nal[i].size(); j++)
    cout<<nal[i][j].first<<' ';
  cout<<endl;
  }
*/
long long ans=0;
for (i=0; i<k; i++)
  {
  long long lish=max((long long)0, nal[i].size()-n/k);
  for (long long j=0; j<lish; j++)
    {
    ans+=(j/(n/k))+1;
    nal[(i+(j/(n/k))+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+(j/(n/k))+1)%k].back().first+=(j/(n/k))+1;
    }
  }
for (i=0; i<k; i++)
  {
  long long lish=max((long long)0, nal[i].size()-n/k);
  for (long long j=0; j<lish; j++)
    {
    ans+=(j/(n/k))+1;
    nal[(i+(j/(n/k))+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+(j/(n/k))+1)%k].back().first+=(j/(n/k))+1;
    }
  }

for (i=0; i<n; i++)
  itog.push_back(0);
for (i=0; i<k; i++)
  {
  for (long long j=0; j<nal[i].size(); j++)
    {
 //   cout<<i<<' '<<j<<' '<<nal[i][j].first<<' '<<nal[i][j].second<<endl;
    long long p=nal[i][j].second;
    itog[p]=nal[i][j].first;
    }
  }

cout<<ans<<endl;
for (i=0; i<n; i++)
  cout<<itog[i]<<' ';
cout<<endl;

/*
sort(m1.begin(), m1.end(), cmp);

long long otv=0;

for (i=0; i<n; i++)
  {
  long long z=(i/(n/k));
  long long add=z-m1[i].ost;
  if (add<0)
    add+=k;
  otv+=add;
  m1[i].v+=add;
  }

vector <long long> ans;
for (i=0; i<n; i++)
  ans.push_back(0);

for (i=0; i<n; i++)
  ans[m1[i].i]=m1[i].v;

cout<<otv<<endl;

for (i=0; i<n; i++)
  cout<<ans[i]<<' ';
cout<<endl;

*/

    return 0;

}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  l=1;
  next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<1;
      cout<<l<<endl;
      } l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l==103029)
      cout<<"Scha vivedu i wilechu"<<endl;
    if (viv&&l>=103025)
      cout<<l<<endl;
    if (viv&&l==103029)
      cout<<"Vse eto ti ne uvidish'"<<endl;
    if (viv&&l==103029)
      cout<<"chooooooo"<<' ';
    l++;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<' ';
    if (viv&&l>=103025)
      cout<<j<<' ';
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  if (viv&&ost[i]>sh)
    cout<<"I change "<<i<<endl;
  while (ost[i]>sh)
    {
    if (viv)
      cout<<ost[i]<<endl;
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

struct mine
{
  long long ost, v, i;
};

bool cmp (mine a, mine b)
{

if (a.ost<b.ost)
  return true;
if (a.ost>b.ost)
  return false;
if (a.v<b.v)
  return true;
if (a.v>b.v)
  return false;
if (a.i<b.i)
  return true;
if (a.i>=b.i)
  return false;
}

long long n,k,i,j;
vector <long long> m,ost,itog;
vector <pair <long long, long long> > nal[200010];
vector <mine> m1;
long long up[200100];

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  m1.push_back({a%k, a, i});
  nal[a%k].push_back({a, i});
  }

for (i=0; i<k; i++)
  ost.push_back(0);

for (i=0; i<n; i++)
  ost[m[i]%k]++;

for (i=0; i<k; i++)
  {
  long long lish=min((long long)0, ost[i]-n);
  for (long long j=0; j<lish; j++)
    {
    nal[(i+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+1)%k].back().first++;
    }
  }
/*
for (i=0; i<k; i++)
  {
  for (j=0; j<nal[i].size(); j++)
    cout<<nal[i][j].first<<' ';
  cout<<endl;
  }
*/
long long ans=0;
for (i=0; i<k; i++)
  {
  long long lish=max((long long)0, nal[i].size()-n/k);
  for (long long j=0; j<lish; j++)
    {
    ans+=(j/(n/k))+1;
    nal[(i+(j/(n/k))+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+(j/(n/k))+1)%k].back().first+=(j/(n/k))+1;
    }
  }
for (i=0; i<k; i++)
  {
  long long lish=max((long long)0, nal[i].size()-n/k);
  for (long long j=0; j<lish; j++)
    {
    ans+=(j/(n/k))+1;
    nal[(i+(j/(n/k))+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+(j/(n/k))+1)%k].back().first+=(j/(n/k))+1;
    }
  }

for (i=0; i<n; i++)
  itog.push_back(0);
for (i=0; i<k; i++)
  {
  for (long long j=0; j<nal[i].size(); j++)
    {
 //   cout<<i<<' '<<j<<' '<<nal[i][j].first<<' '<<nal[i][j].second<<endl;
    long long p=nal[i][j].second;
    itog[p]=nal[i][j].first;
    }
  }

cout<<ans<<endl;
for (i=0; i<n; i++)
  cout<<itog[i]<<' ';
cout<<endl;

/*
sort(m1.begin(), m1.end(), cmp);

long long otv=0;

for (i=0; i<n; i++)
  {
  long long z=(i/(n/k));
  long long add=z-m1[i].ost;
  if (add<0)
    add+=k;
  otv+=add;
  m1[i].v+=add;
  }

vector <long long> ans;
for (i=0; i<n; i++)
  ans.push_back(0);

for (i=0; i<n; i++)
  ans[m1[i].i]=m1[i].v;

cout<<otv<<endl;

for (i=0; i<n; i++)
  cout<<ans[i]<<' ';
cout<<endl;

*/

    return 0;

}
/*
→Протокол тестирования
Test: #1, время: 15 мс., память: 7044 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
6 3
3 2 0 6 10 12
Вывод
3
3 2 0 8 10 13
Ответ
3
3 2 0 7 10 14
Протокол тестирования
ok Ok, the answer is 3
Test: #2, время: 15 мс., память: 7040 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
4 2
0 1 2 3
Вывод
0
0 1 2 3
Ответ
0
0 1 2 3
Протокол тестирования
ok Ok, the answer is 0
Test: #3, время: 15 мс., память: 7036 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
1 1
1000000000
Вывод
0
1000000000
Ответ
0
1000000000
Протокол тестирования
ok Ok, the answer is 0
Test: #4, время: 30 мс., память: 7048 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
6 3
3 2 0 6 10 11
Вывод
1
3 2 0 7 10 11
Ответ
1
3 2 0 7 10 11
Протокол тестирования
ok Ok, the answer is 1
Test: #5, время: 170 мс., память: 28172 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 100000
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1...
Вывод
9999900000
1000000000 1000000000 1000099999 1000099999 1000099998 1000099998 1000099997 1000099997 1000099996 1000099996 1000099995 1000099995 1000099994 1000099994 1000099993 1000099993 1000099992 1000099992 1000099991 1000099991 1000099990 1000099990 1000099989 1000099989 1000099988 1000099988 1000099987 1000099987 1000099986 1000099986 1000099985 1000099985 1000099984 1000099984 1000099983 1000099983 1000099982 1000099982 1000099981 1000099981 1000099980 1000099980 1000099979 1000099979 1000099978 1000...
Ответ
9999900000
1000000000 1000000000 1000000001 1000000001 1000000002 1000000002 1000000003 1000000003 1000000004 1000000004 1000000005 1000000005 1000000006 1000000006 1000000007 1000000007 1000000008 1000000008 1000000009 1000000009 1000000010 1000000010 1000000011 1000000011 1000000012 1000000012 1000000013 1000000013 1000000014 1000000014 1000000015 1000000015 1000000016 1000000016 1000000017 1000000017 1000000018 1000000018 1000000019 1000000019 1000000020 1000000020 1000000021 1000000021 1000000022 1000...
Протокол тестирования
ok Ok, the answer is 9999900000
Test: #6, время: 93 мс., память: 23180 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
Вывод
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
Ответ
0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
Протокол тестирования
ok Ok, the answer is 0
Test: #7, время: 93 мс., память: 25228 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
Вывод
100000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
Ответ
100000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
Протокол тестирования
ok Ok, the answer is 100000
Test: #8, время: 46 мс., память: 12280 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
62496 42
297648424 79831131 586558055 196385734 276630325 441851969 328533016 415676688 494467342 881552695 757754319 947428515 552811277 160439549 210238887 413687752 523728667 727893180 303432565 141688925 569780043 341766142 988983094 646011738 710759587 115921230 599435432 933143040 691683836 302077033 465892854 237708704 275496702 787350566 686753792 192715086 342740959 372080392 887990389 448152517 210605393 500717948 795930582 652249019 580195264 108478729 443910418 766699356 532184188 992392389 42...
Вывод
6806
297648424 79831131 586558055 196385734 276630325 441851969 328533016 415676688 494467342 881552695 757754319 947428515 552811277 160439549 210238887 413687752 523728667 727893180 303432565 141688925 569780043 341766142 988983094 646011738 710759587 115921230 599435432 933143040 691683836 302077033 465892854 237708704 275496702 787350566 686753792 192715086 342740959 372080392 887990389 448152517 210605393 500717948 795930582 652249019 580195264 108478729 443910418 766699356 532184188 992392389 426464...
Ответ
6806
297648424 79831131 586558055 196385734 276630325 441851969 328533016 415676688 494467342 881552695 757754319 947428515 552811277 160439549 210238887 413687752 523728667 727893180 303432565 141688925 569780043 341766142 988983094 646011738 710759587 115921230 599435432 933143040 691683836 302077033 465892854 237708704 275496702 787350566 686753792 192715086 342740959 372080392 887990389 448152517 210605393 500717948 795930582 652249019 580195264 108478729 443910418 766699356 532184188 992392389 426464...
Протокол тестирования
ok Ok, the answer is 6806
Test: #9, время: 187 мс., память: 58388 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 10000
931099069 209344427 769710141 883789235 560111032 597581441 975145120 176380024 929240035 589438024 437416640 992660812 782115626 44821114 129370220 169937137 683871376 843751946 637348259 620426709 115653588 645402509 178966891 625685458 823192999 500791870 254714686 75555152 329493757 271008029 820631776 905856012 216600462 222014744 257694968 256008757 310664026 325419576 20412200 19681870 392918554 439638410 850002785 552854386 55005842 282088 905080888 615573342 572434943 952918379 41633...
Вывод
4062578
931099069 209344427 769710141 883789235 560111032 597581441 975145120 176380024 929240035 589438024 437416640 992660812 782115626 44821114 129370220 169937137 683871376 843751946 637348259 620426709 115653588 645402509 178966891 625685458 823192999 500791870 254714686 75555152 329493757 271008029 820631776 905856012 216600462 222014744 257694968 256008757 310664026 325419576 20412200 19681870 392918554 439638410 850002785 552854386 55005842 282088 905080888 615573342 572434943 952918379 416338152 ...
Ответ
4062578
931099069 209344427 769710141 883789235 560111032 597581441 975145120 176380024 929240035 589438024 437416640 992660812 782115626 44821114 129370220 169937137 683871376 843751946 637348259 620426709 115653588 645402509 178966891 625685458 823192999 500791870 254714686 75555152 329493757 271008029 820631776 905856012 216600462 222014744 257694968 256008757 310664026 325419576 20412200 19681870 392918554 439638410 850002785 552854386 55005842 282088 905080888 615573342 572434943 952918379 416338152 ...
Протокол тестирования
ok Ok, the answer is 4062578
Test: #10, время: 93 мс., память: 24792 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
170170 1001
889 286 230 331 112 301 246 195 526 908 826 875 687 629 644 512 187 519 393 674 641 414 519 427 973 213 582 291 741 852 323 160 872 791 878 175 443 25 198 796 507 633 789 979 95 299 286 132 336 791 132 395 22 709 567 933 871 849 108 236 940 808 394 558 199 234 398 32 794 741 193 381 723 553 334 48 553 728 249 741 221 591 132 403 547 430 895 885 205 169 141 561 535 274 385 371 88 274 936 843 551 490 45 582 946 774 101 154 230 564 872 95 29 683 426 427 140 524 180 316 354 347 374 871 992 634 415...
Вывод
1
889 286 230 331 112 301 246 195 526 908 826 875 687 629 644 512 187 519 393 674 641 414 519 427 973 213 582 291 741 852 323 160 872 791 878 175 443 25 198 796 507 633 789 979 95 299 286 132 336 791 132 395 22 709 567 933 871 849 108 236 940 808 394 558 199 234 398 32 794 741 193 381 723 553 334 48 553 728 249 741 221 591 132 403 547 430 895 885 205 169 141 561 535 274 385 371 88 274 936 843 551 490 45 582 946 774 101 154 230 564 872 95 29 683 426 427 140 524 180 316 354 347 374 871 992 634 415 788 919 9...
Ответ
1
889 286 230 331 112 301 246 195 526 908 826 875 687 629 644 512 187 519 393 674 641 414 519 427 973 213 582 291 741 852 323 160 872 791 878 175 443 25 198 796 507 633 789 979 95 299 286 132 336 791 132 395 22 709 567 933 871 849 108 236 940 808 394 558 199 234 398 32 794 741 193 381 723 553 334 48 553 728 249 741 221 591 132 403 547 430 895 885 205 169 141 561 535 274 385 371 88 274 936 843 551 490 45 582 946 774 101 154 230 564 872 95 29 683 426 427 140 524 180 316 354 347 374 871 992 634 415 788 919 9...
Протокол тестирования
ok Ok, the answer is 1
Test: #11, время: 77 мс., память: 24824 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
170170 1001
915 992 138 270 980 995 603 273 825 977 419 169 131 504 71 438 746 207 4 973 842 483 247 478 477 763 618 431 560 676 986 384 189 273 998 107 506 930 281 821 27 637 553 464 212 736 584 669 750 263 979 701 412 67 50 704 992 574 83 423 99 998 911 14 868 683 83 233 995 578 323 175 372 166 655 437 182 172 415 319 290 882 166 235 271 568 255 157 34 938 75 362 216 611 665 26 320 444 213 883 33 406 950 369 283 834 615 991 348 206 443 331 717 723 614 501 963 913 749 128 309 961 586 453 500 967 551 491 ...
Вывод
42
915 992 138 270 980 995 603 273 825 977 419 169 131 504 71 438 746 207 4 973 842 483 247 478 477 763 618 431 560 676 986 384 189 273 998 107 506 930 281 821 27 637 553 464 212 736 584 669 750 263 979 701 412 67 50 704 992 574 83 423 99 998 911 14 868 683 83 233 995 578 323 175 372 166 655 437 182 172 415 319 290 882 166 235 271 568 255 157 34 938 75 362 216 611 665 26 320 444 213 883 33 406 950 369 283 834 615 991 348 206 443 331 717 723 614 501 963 913 749 128 309 961 586 453 500 967 551 491 487 588 7...
Ответ
42
915 992 138 270 980 995 603 273 825 977 419 169 131 504 71 438 746 207 4 973 842 483 247 478 477 763 618 431 560 676 986 384 189 273 998 107 506 930 281 821 27 637 553 464 212 736 584 669 750 263 979 701 412 67 50 704 992 574 83 423 99 998 911 14 868 683 83 233 995 578 323 175 372 166 655 437 182 172 415 319 290 882 166 235 271 568 255 157 34 938 75 362 216 611 665 26 320 444 213 883 33 406 950 369 283 834 615 991 348 206 443 331 717 723 614 501 963 913 749 128 309 961 586 453 500 967 551 491 487 588 7...
Протокол тестирования
ok Ok, the answer is 42
Test: #12, время: 77 мс., память: 24888 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
170170 1001
46 200 878 146 422 640 839 602 310 85 356 659 335 782 491 869 237 789 882 522 488 2 410 158 899 81 969 121 120 330 244 141 700 965 817 206 22 351 782 402 447 776 706 149 585 588 543 664 58 938 105 212 189 476 665 325 110 591 864 724 47 105 168 694 620 809 146 202 853 588 749 378 380 658 207 395 813 540 924 176 365 106 198 337 579 997 229 521 178 974 569 59 977 814 434 404 238 166 451 261 339 694 898 641 898 705 15 764 898 309 170 963 552 242 383 172 244 562 998 437 651 417 546 524 199 654 619 ...
Вывод
73
46 200 878 146 422 640 839 602 310 85 356 659 335 782 491 869 237 789 882 522 488 2 410 158 899 81 969 121 120 330 244 141 700 965 817 206 22 351 782 402 447 776 706 149 585 588 543 664 58 938 105 212 189 476 665 325 110 591 864 724 47 105 168 694 620 809 146 202 853 588 749 378 380 658 207 395 813 540 924 176 365 106 198 337 579 997 229 521 178 974 569 59 977 814 434 404 238 166 451 261 339 694 898 641 898 705 15 764 898 309 170 963 552 242 383 172 244 562 998 437 651 417 546 524 199 654 619 910 203 1...
Ответ
73
46 200 878 146 422 640 839 602 310 85 356 659 335 782 491 869 237 789 882 522 488 2 410 158 899 81 969 121 120 330 244 141 700 965 817 206 22 351 782 402 447 776 706 149 585 588 543 664 58 938 105 212 189 476 665 325 110 591 864 724 47 105 168 694 620 809 146 202 853 588 749 378 380 658 207 395 813 540 924 176 365 106 198 337 579 997 229 521 178 974 569 59 977 814 434 404 238 166 451 261 339 694 898 641 898 705 15 764 898 309 170 963 552 242 383 172 244 562 998 437 651 417 546 524 199 654 619 910 203 1...
Протокол тестирования
ok Ok, the answer is 73
Test: #13, время: 109 мс., память: 23460 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 25000
14037 6276 663 17243 20568 19898 12462 9300 8277 5190 17323 15542 16027 2633 10060 24740 11848 7992 6467 8167 9216 24714 344 19075 14499 24420 20393 87 3822 22783 19147 8744 6558 896 16502 6719 11444 23313 1371 1354 2392 14230 13802 12979 6277 16073 8588 6381 18491 23736 5519 19247 8261 17030 17793 23191 2167 8719 16052 19102 17389 19346 15650 24984 11278 8304 8970 8633 10407 8605 4731 11538 11137 3989 2108 5052 11824 6783 19308 111 7487 18103 5258 14801 1508 18396 11732 298 10353 5048 3980 1...
Вывод
2
14037 6276 663 17243 20568 19898 12462 9300 8277 5190 17323 15542 16027 2633 10060 24740 11848 7992 6467 8167 9216 24714 344 19075 14499 24420 20393 87 3822 22783 19147 8744 6558 896 16502 6719 11444 23313 1371 1354 2392 14230 13802 12979 6277 16073 8588 6381 18491 23736 5519 19247 8261 17030 17793 23191 2167 8719 16052 19102 17389 19346 15650 24984 11278 8304 8970 8633 10407 8605 4731 11538 11137 3989 2108 5052 11824 6783 19308 111 7487 18103 5258 14801 1508 18396 11732 298 10353 5048 3980 12996 19261 ...
Ответ
2
14037 6276 663 17243 20568 19898 12462 9300 8277 5190 17323 15542 16027 2633 10060 24740 11848 7992 6467 8167 9216 24714 344 19075 14499 24420 20393 87 3822 22783 19147 8744 6558 896 16502 6719 11444 23313 1371 1354 2392 14230 13802 12979 6277 16073 8588 6381 18491 23736 5519 19247 8261 17030 17793 23191 2167 8719 16052 19102 17389 19346 15650 24984 11278 8304 8970 8633 10407 8605 4731 11538 11137 3989 2108 5052 11824 6783 19308 111 7487 18103 5258 14801 1508 18396 11732 298 10353 5048 3980 12996 19261 ...
Протокол тестирования
ok Ok, the answer is 2
Test: #14, время: 140 мс., память: 27276 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 50000
424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 424242 ...
Вывод
4999900000
424242 424242 424242 424242 474241 474241 474241 474241 474240 474240 474240 474240 474239 474239 474239 474239 474238 474238 474238 474238 474237 474237 474237 474237 474236 474236 474236 474236 474235 474235 474235 474235 474234 474234 474234 474234 474233 474233 474233 474233 474232 474232 474232 474232 474231 474231 474231 474231 474230 474230 474230 474230 474229 474229 474229 474229 474228 474228 474228 474228 474227 474227 474227 474227 474226 474226 474226 474226 474225 474225 474225 47...
Ответ
4999900000
424242 424242 424242 424242 424243 424243 424243 424243 424244 424244 424244 424244 424245 424245 424245 424245 424246 424246 424246 424246 424247 424247 424247 424247 424248 424248 424248 424248 424249 424249 424249 424249 424250 424250 424250 424250 424251 424251 424251 424251 424252 424252 424252 424252 424253 424253 424253 424253 424254 424254 424254 424254 424255 424255 424255 424255 424256 424256 424256 424256 424257 424257 424257 424257 424258 424258 424258 424258 424259 424259 424259 42...
Протокол тестирования
ok Ok, the answer is 4999900000
Test: #15, время: 124 мс., память: 25824 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
160000 400
242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 24...
Вывод
31920000
242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 2424...
Ответ
31920000
242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 242424 2424...
Протокол тестирования
ok Ok, the answer is 31920000
Test: #16, время: 249 мс., память: 124804 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
100000 4000
1 3 1 3 2 1 2 2 1 0 0 0 0 2 2 0 0 2 2 2 3 0 2 1 1 2 0 0 2 0 3 1 1 2 1 0 2 2 2 1 3 1 1 0 1 1 1 1 0 0 1 3 1 0 1 1 0 2 3 0 1 2 3 1 3 0 0 0 1 2 1 2 1 0 1 3 1 0 2 1 2 3 3 2 3 3 1 0 0 3 3 3 0 3 3 1 0 3 3 3 1 3 3 2 1 3 0 1 0 1 1 0 1 0 0 0 0 3 2 3 1 2 3 3 3 3 2 1 0 1 1 0 1 1 3 1 0 1 3 1 1 2 2 2 3 2 2 3 0 2 3 2 3 0 3 0 1 3 3 1 1 2 2 3 0 2 1 0 0 2 3 3 2 3 0 2 1 1 1 2 3 3 0 2 3 1 3 1 2 0 3 2 2 2 0 2 2 1 0 0 0 1 0 2 3 1 0 3 3 3 0 0 3 2 1 3 0 3 0 1 3 2 3 0 2 1 3 0 1 0 1 0 3 1 1 0 1 3 3 1 1 0 0 3 1 1 1 2 1 ...
Вывод
199800025
1 3 1 3 2 1 2 2 1 0 0 0 0 2 2 0 0 2 2 2 3 0 2 1 1 2 0 0 2 0 3 1 1 2 1 0 2 2 2 1 3 1 1 0 1 1 1 1 0 0 1 3 1 0 1 1 0 2 3 0 1 2 3 1 3 0 0 0 1 2 1 2 1 0 1000 3 1000 0 2 1000 2 3 3 2 3 3 1000 0 0 3 3 3 0 3 3 1000 1000 3 3 3 1000 3 3 2 1000 3 1000 1000 1000 1000 1077 1000 1077 1000 1000 1000 1000 1080 2 1080 1077 2 1080 1080 1080 1080 1006 1077 1000 1077 1077 1000 1077 1077 1080 1077 1000 1077 1080 1077 1077 1006 1006 1006 1080 1006 1006 1080 1000 1006 1079 1006 1079 1000 1079 999 1077 1079 1079 1077 1...
Ответ
199800025
1 3 1 3 2 1 2 2 1 0 0 0 0 2 2 0 0 2 2 2 3 0 2 1 1 2 0 0 2 0 3 1 1 2 1 0 2 2 2 1 3 1 1 0 1 1 1 1 0 0 1 3 1 0 1 1 0 2 3 0 1 2 3 1 3 0 0 0 1 2 1 2 1 0 2003 3 2003 0 2 2003 2 3 3 2 3 3 2003 0 0 3 3 3 0 3 3 2003 3000 3 3 3 2003 3 3 2 2003 3 3000 2003 3000 2003 2003 3000 2003 3000 3000 3000 3000 4 2 4 2003 2 4 4 4 4 1001 2003 3000 2003 2003 3000 2003 2003 4 2003 3000 2003 4 2003 2003 1001 1001 1001 4 1001 1001 4 3000 1001 4 1001 4 3000 4 3001 2003 4 4 2004 2004 1001 1001 4 3001 1001 2004 3001 3001 100...
Протокол тестирования
ok Ok, the answer is 199800025
Test: #17, время: 326 мс., память: 100352 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 100000
188356 136368 183739 123230 124044 63093 45839 141319 23007 136620 183933 24920 89109 65789 71269 136420 169327 188125 141900 35453 194670 91494 53016 124252 40378 198238 36030 121188 138105 189716 121837 79951 134247 140988 128158 172500 175751 89196 86037 172487 166023 115079 127510 11424 150031 90802 166492 65925 5229 152077 154775 51966 152933 83667 55460 49781 199596 47294 34463 199178 12561 130248 111213 194975 13238 27831 135795 191746 164105 168978 161812 140844 121374 100640 12434 3...
Вывод
32964797
188356 136368 183739 123230 124044 63093 45839 141319 23007 136620 183933 24920 89109 65789 71269 136420 169327 188125 141900 35453 194670 91494 53016 124252 40378 198238 36030 121188 138105 189716 121837 79951 134247 140988 128158 172500 175751 89196 86037 172487 166023 115079 127510 11424 150031 90802 166492 65925 5229 152077 154775 51966 152933 83667 55460 49781 199596 47294 34463 199178 12561 130248 111213 194975 13238 27831 135795 191746 164105 168978 161812 140844 121374 100640 12434 32960 ...
Ответ
32964797
188356 136368 183739 123230 124044 63093 45839 141319 23007 136620 183933 24920 89109 65789 71269 136420 169327 188125 141900 35453 194670 91494 53016 124252 40378 198238 36030 121188 138105 189716 121837 79951 134247 140988 128158 172500 175751 89196 86037 172487 166023 115079 127510 11424 150031 90802 166492 65925 5229 152077 154775 51966 152933 83667 55460 49781 199596 47294 34463 199178 12561 130248 111213 194975 13238 27831 135795 191746 164105 168978 161812 140844 121374 100640 12434 32960 ...
Протокол тестирования
ok Ok, the answer is 32964797
Test: #18, время: 124 мс., память: 54912 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 320
312 114 154 2 285 362 266 400 198 325 18 138 150 272 392 346 231 432 182 428 229 281 20 336 323 265 371 72 209 291 296 33 97 172 446 355 125 7 121 136 215 246 334 256 186 285 180 80 310 63 321 138 310 7 156 232 126 241 377 227 88 278 273 151 36 437 261 92 303 96 225 395 307 270 296 4 182 142 318 435 32 361 258 377 101 53 66 270 397 5 419 97 111 237 171 352 367 94 422 393 23 340 243 331 248 437 167 387 176 303 352 109 124 129 9 43 155 299 92 111 135 178 138 393 320 136 9 290 172 211 11 51 284 12...
Вывод
5477007
312 114 154 2 285 362 266 400 198 325 18 138 150 272 392 346 231 432 182 428 229 281 20 336 323 265 371 72 209 291 296 33 97 172 446 355 125 7 121 136 215 246 334 256 186 285 180 80 310 63 321 138 310 7 156 232 126 241 377 227 88 278 273 151 36 437 261 92 303 96 225 395 307 270 296 4 182 142 318 435 32 361 258 377 101 53 66 270 397 5 419 97 111 237 171 352 367 94 422 393 23 340 243 331 248 437 167 387 176 303 352 109 124 129 9 43 155 299 92 111 135 178 138 393 320 136 9 290 172 211 11 51 284 120 4...
Ответ
5477007
312 114 154 2 285 362 266 400 198 325 18 138 150 272 392 346 231 432 182 428 229 281 20 336 323 265 371 72 209 291 296 33 97 172 446 355 125 7 121 136 215 246 334 256 186 285 180 80 310 63 321 138 310 7 156 232 126 241 377 227 88 278 273 151 36 437 261 92 303 96 225 395 307 270 296 4 182 142 318 435 32 361 258 377 101 53 66 270 397 5 419 97 111 237 171 352 367 94 422 393 23 340 243 331 248 437 167 387 176 303 352 109 124 129 9 43 155 299 92 111 135 178 138 393 320 136 9 290 172 211 11 51 284 120 4...
Протокол тестирования
ok Ok, the answer is 5477007
Test: #19, время: 15 мс., память: 7200 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
100 25
6745 2075 7499 7517 1776 5164 2335 2745 4465 1457 7565 2232 2486 9025 8059 9646 8017 7662 9690 3352 2306 366 7422 1073 7169 8966 4506 8225 5614 8628 2908 7452 9625 9332 7097 353 1043 8118 5794 4486 626 971 6731 6618 887 6354 4814 7307 7681 6160 9351 2579 411 3436 5570 2812 2726 4433 3220 577 5891 3861 528 2183 127 5579 6979 4005 9953 5038 9937 4792 3003 9417 8796 1565 11 2596 2486 3494 4464 9568 5512 5565 9822 9820 4848 2889 9527 2249 9860 8236 256 8434 8038 6407 5570 5922 7435 2815
Вывод
88
6745 2075 7499 7517 1776 5164 2335 2745 4465 1457 7565 2232 2486 9025 8059 9646 8017 7662 9690 3352 2306 366 7422 1073 7169 8966 4506 8225 5614 8628 2908 7452 9625 9332 7097 353 1043 8118 5794 4486 626 971 6731 6618 887 6354 4814 7307 7681 6160 9351 2579 411 3436 5570 2812 2726 4433 3220 577 5891 3863 528 2183 127 5579 6979 4005 9953 5038 9937 4792 3005 9417 8796 1565 13 2596 2498 3494 4464 9568 5530 5573 9822 9824 4848 2891 9530 2249 9860 8259 258 8434 8038 6409 5574 5922 7435 2819
Ответ
88
6745 2075 7499 7517 1776 5164 2335 2745 4465 1457 7565 2232 2486 9025 8059 9646 8017 7662 9690 3352 2306 366 7422 1073 7169 8966 4506 8225 5614 8628 2908 7452 9625 9332 7097 353 1043 8118 5794 4486 626 971 6731 6618 887 6354 4814 7307 7681 6160 9351 2579 411 3436 5570 2812 2726 4433 3220 577 5891 3863 528 2183 127 5579 6979 4005 9953 5038 9937 4792 3005 9417 8796 1565 24 2596 2505 3494 4464 9568 5513 5566 9822 9823 4848 2899 9530 2249 9860 8259 259 8434 8038 6408 5573 5922 7435 2819
Протокол тестирования
ok Ok, the answer is 88
Test: #20, время: 140 мс., память: 23520 КБ, код возврата: 0, код возврата чекера: 0, вердикт: OK
Ввод
200000 5
255023463 609380609 991418268 679841717 695130243 586586058 41715375 841745862 289917343 49978900 896145257 932870222 305200787 991090470 943836044 707066036 168626335 73444772 730625479 751398845 926230532 494409015 460302659 514025416 70269550 58923652 165873074 586206805 133337084 447106011 450874786 393755073 606487085 482939566 448803233 289318786 442273010 975229520 668351653 754754873 417477706 648679079 912390447 120587356 717474015 735077685 128589301 976145174 126141825 500916725 799220...
Вывод
455
255023463 609380609 991418268 679841717 695130243 586586058 41715375 841745862 289917343 49978900 896145257 932870222 305200787 991090470 943836044 707066036 168626335 73444772 730625479 751398845 926230532 494409015 460302659 514025416 70269550 58923652 165873074 586206805 133337084 447106011 450874786 393755073 606487085 482939566 448803233 289318786 442273010 975229520 668351653 754754873 417477706 648679079 912390447 120587356 717474015 735077685 128589301 976145174 126141825 500916725 799220050 4...
Ответ
455
255023463 609380609 991418268 679841717 695130243 586586058 41715375 841745862 289917343 49978900 896145257 932870222 305200787 991090470 943836044 707066036 168626335 73444772 730625479 751398845 926230532 494409015 460302659 514025416 70269550 58923652 165873074 586206805 133337084 447106011 450874786 393755073 606487085 482939566 448803233 289318786 442273010 975229520 668351653 754754873 417477706 648679079 912390447 120587356 717474015 735077685 128589301 976145174 126141825 500916725 799220050 4...
Протокол тестирования
ok Ok, the answer is 455
*/


#include <bits/stdc++.h>

using namespace std;

struct mine
{
  long long ost, v, i;
};

bool cmp (mine a, mine b)
{

if (a.ost<b.ost)
  return true;
if (a.ost>b.ost)
  return false;
if (a.v<b.v)
  return true;
if (a.v>b.v)
  return false;
if (a.i<b.i)
  return true;
if (a.i>=b.i)
  return false;
}

long long n,k,i,j;
vector <long long> m,ost;
vector <mine> m1;
long long up[300000];

int main()
{
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  m1.push_back({a%k, a, i});
  }

/*
for (i=0; i<k; i++)
  ost.push_back(0);

for (i=0; i<n; i++)
  ost[m[i]%k]++;

for (i=0; i<k; i++)
  ost.push_back(ost[i]);
for (i=0; i<k; i++)
  ost.push_back(ost[i]);
for (i=0; i<k; i++)
  ost.push_back(ost[i]);
for (i=0; i<k; i++)
  ost.push_back(ost[i]);

for (i=0; i<k; i++)
  cout<<ost[i]<<' ';
cout<<endl;

long long ans=0;
for (i=0; i<3*k-1; i++)
  if (ost[i]>n/k)
    {
    cout<<i<<' '<<ost[i]<<' '<<endl;
    ost[i+1]+=(ost[i]-n/k);
    ost[k+i+1]+=(ost[i]-n/k);
    ost[2*k+i+1]+=(ost[i]-n/k);
    up[i%k]+=ost[i]-n/k;
    ans+=(ost[i]-n/k);
    ost[i]=n/k;
    ost[k+i]=n/k;
    ost[2*k+i]=n/k;
    }

cout<<ans<<endl;

for (i=0; i<k; i++)
  cout<<up[i]<<' ';
cout<<endl;
*/

sort(m1.begin(), m1.end(), cmp);

long long otv=0;

for (i=0; i<n; i++)
  {
  long long z=(i/(n/k));
  long long add=z-m1[i].ost;
  if (add<0)
    add+=k;
  otv+=add;
  m1[i].v+=add;
  }

vector <long long> ans;
for (i=0; i<n; i++)
  ans.push_back(0);

for (i=0; i<n; i++)
  ans[m1[i].i]=m1[i].v;

cout<<otv<<endl;

for (i=0; i<n; i++)
  cout<<ans[i]<<' ';
cout<<endl;

    return 0;

}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103000)
      cout<<l<<endl;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;
void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  if (viv&&ost[i]>sh)
    cout<<"I change "<<i<<endl;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=300000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss],work[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  }
long long sh=n/k;

for (i=0; i<k; i++)
    ost.push_back(0);
j=0;
for (auto i:m)
  {
  ost[i%k]++;
  work[i%k].push_back(i);
  num[i%k].push_back(j);
  j++;
  }

j=0;
for (i=0; i<k; i++)
  {
  while (work[i].size()>sh)
    {
    j=max(j, i);
    long long v=work[i].back();
    long long p=num[i].back();
    work[i].pop_back();
    num[i].pop_back();
    ost[i]--;
    while (ost[j]>=sh&&j<k)
      j++;
    if (j>=k)
      add();
    while (ost[j]>=sh)
      j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    work[j].push_back(v);
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103025)
      cout<<l<<endl;
    l++;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<' ';
    if (viv&&l>=103025)
      cout<<j<<' ';
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  if (viv&&ost[i]>sh)
    cout<<"I change "<<i<<endl;
  while (ost[i]>sh)
    {
    if (viv&&ost[i]<100000)
      cout<<ost[i]<<endl;
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=101000)
      cout<<l;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (long long i=0; i<k; i++)
    ost.push_back(ost[i]);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=false;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l==103029)
      cout<<"Scha vivedu i wilechu"<<endl;
    if (viv&&l>=103025)
      cout<<l<<endl;
    if (viv&&l==103029)
      cout<<"Vse eto ti ne uvidish'"<<endl;
    if (viv&&l==103029)
      cout<<"chooooooo"<<endl;
    l++;
    if (viv&&l>=103025)
      cout<<"chooooooo"<<endl;
    if (viv&&l>=103025)
      cout<<j<<endl;
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<endl;
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto q:ost)
    ost.push_back(q);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103025)
      cout<<l<<endl;
    l++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    while (j<k&&ost[j]>=sh)
      j++;
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      add();
    if (viv&&l>=103025)
      cout<<j<<' ';
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=103025)
      cout<<l<<endl;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    if (viv&&l>=103025)
      cout<<j<<endl;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=900000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss];
bool alr;
bool viv;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<k; i++)
  ost.push_back(0);
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  ost[a%k]++;
  num[a%k].push_back(i);
  }
long long sh=n/k;

if (m[0]==424242)
  viv=true;

j=0;
for (i=0; i<k; i++)
  {
  j=max(j, i);
  long long l=1;
  long long next=1;
  while (ost[i]>sh)
    {
    long long p=num[i].back();
    num[i].pop_back();
    ost[i]--;
    if (viv&&l==next)
      {
      next<<=1;
      cout<<l<<' '<<next<<endl;
      }
    if (viv&&l>=110000)
      cout<<l;
    l++;
    while (j<k&&ost[j]>=sh)
      j++;
    if (j>=k)
      add();
    if (j>=k)
      while (j<2*k&&ost[j]>=sh)
        j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    num[j].push_back(p);
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

const long long ss=300000;
long long n,k,i,j,ans;
vector <long long> m,ost;
vector <long long> num[ss],work[ss];
bool alr=false;

void add()
{
if (!alr)
  for (auto i:ost)
    ost.push_back(i);
alr=true;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  }
long long sh=n/k;

for (i=0; i<k; i++)
    ost.push_back(0);
j=0;
for (auto i:m)
  {
  ost[i%k]++;
  work[i%k].push_back(i);
  num[i%k].push_back(j);
  j++;
  }

j=0;
for (i=0; i<k; i++)
  {
  while (work[i].size()>sh)
    {
    j=max(j, i);
    long long v=work[i].back();
    long long p=num[i].back();
    work[i].pop_back();
    num[i].pop_back();
    ost[i]--;
    while (ost[j]>=sh&&j<k)
      j++;
    if (j>=k)
      add();
    while (ost[j]>=sh)
      j++;
    ans+=j-i;
    m[p]+=j-i;
    ost[j]++;
    }
  }

cout<<ans<<endl;
for (auto i:m)
  cout<<i<<' ';

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

struct mine
{
  long long ost, v, i;
};

bool cmp (mine a, mine b)
{

if (a.ost<b.ost)
  return true;
if (a.ost>b.ost)
  return false;
if (a.v<b.v)
  return true;
if (a.v>b.v)
  return false;
if (a.i<b.i)
  return true;
if (a.i>=b.i)
  return false;
}

long long n,k,i,j;
vector <long long> m,ost,itog;
vector <pair <long long, long long> > nal[200100];
vector <mine> m1;

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n>>k;
for (i=0; i<n; i++)
  {
  long long a;
  cin>>a;
  m.push_back(a);
  m1.push_back({a%k, a, i});
  nal[a%k].push_back({a, i});
  }

for (i=0; i<k; i++)
  ost.push_back(0);

for (i=0; i<n; i++)
  ost[m[i]%k]++;

for (i=0; i<k; i++)
  {
  long long lish=min((long long)0, ost[i]-n);
  for (long long j=0; j<lish; j++)
    {
    nal[(i+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+1)%k].back().first++;
    }
  }
/*
for (i=0; i<k; i++)
  {
  for (j=0; j<nal[i].size(); j++)
    cout<<nal[i][j].first<<' ';
  cout<<endl;
  }
*/
long long ans=0;
for (i=0; i<k; i++)
  {
  long long lish=max((long long)0, nal[i].size()-n/k);
  for (long long j=0; j<lish; j++)
    {
    ans+=(j/(n/k))+1;
    nal[(i+(j/(n/k))+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+(j/(n/k))+1)%k].back().first+=(j/(n/k))+1;
    }
  }
for (i=0; i<k; i++)
  {
  long long lish=max((long long)0, nal[i].size()-n/k);
  for (long long j=0; j<lish; j++)
    {
    ans+=(j/(n/k))+1;
    nal[(i+(j/(n/k))+1)%k].push_back(nal[i].back());
    nal[i].pop_back();
    nal[(i+(j/(n/k))+1)%k].back().first+=(j/(n/k))+1;
    }
  }

for (i=0; i<n; i++)
  itog.push_back(0);
for (i=0; i<k; i++)
  {
  for (long long j=0; j<nal[i].size(); j++)
    {
 //   cout<<i<<' '<<j<<' '<<nal[i][j].first<<' '<<nal[i][j].second<<endl;
    long long p=nal[i][j].second;
    itog[p]=nal[i][j].first;
    }
  }

cout<<ans<<endl;
for (i=0; i<n; i++)
  cout<<itog[i]<<' ';
cout<<endl;

/*
sort(m1.begin(), m1.end(), cmp);

long long otv=0;

for (i=0; i<n; i++)
  {
  long long z=(i/(n/k));
  long long add=z-m1[i].ost;
  if (add<0)
    add+=k;
  otv+=add;
  m1[i].v+=add;
  }

vector <long long> ans;
for (i=0; i<n; i++)
  ans.push_back(0);

for (i=0; i<n; i++)
  ans[m1[i].i]=m1[i].v;

cout<<otv<<endl;

for (i=0; i<n; i++)
  cout<<ans[i]<<' ';
cout<<endl;

*/

    return 0;

}


#include<bits/stdc++.h>
#define dout if(debug) cout<<" "

using namespace std;

int debug = 1;

typedef long long int ulli;
typedef unsigned int ui;
typedef pair<int,int> mp;
#define int ulli

struct s{
    int loc;
    int val;
};

void solve(){
    int n,m,k;
    cin>>n>>m;
    k = n/m;
    vector<int> vec(m,0);
    vector<int> free(m,0);
    vector< vector<s> > matrix(m);

    for(int i=0;i<n;i++){
        int temp;
        cin>>temp;
        vec[temp%m]++;
        matrix[temp%m].push_back({i,temp});
    }

    int ans = 0;
    int frrr = 0;
    for(int tt = 0;tt<2;tt++)
    for(int i=0;i<m;i++){
        if(vec[i] > k){
            free[i]+=vec[i]-k;
            frrr += vec[i] - k;
        }
        else if(vec[i] < k and frrr > 0) {
            for(int j=i-1;j>=0;j--){
                if(vec[i] >= k) break;
                while(free[j] > 0 and vec[i]<k){
                    int hell = (i-j+m)%m;
                    int go = 0;
                    if(free[j] >= k-vec[i]){
                        go = k - vec[i];
                    } else {
                        go = free[j];
                    }
                    ans += hell*go;
                    vec[i]+=go;
                    free[j]-=go;
                    frrr -= go;
                }
                if(vec[i] >= k) break;
            }
            for(int j=m-1;j>i;j--) {
                if(vec[i] >= k) break;
                while(free[j] > 0 and vec[i]<k){
                    int hell = (i-j+m)%m;
                    int go = 0;
                    if(free[j] >= k-vec[i]){
                        go = k - vec[i];
                    } else {
                        go = free[j];
                    }
                    ans += hell*go;
                    vec[i]+=go;
                    free[j]-=go;
                    frrr -= go;
                }
                if(vec[i] >= k) break;
            }
        }
    }
    cout << ans << endl;

    stack<s> st;
    int tt = 2;
    ans = 0;
    while(tt--){
        for(int i=0;i<m;i++){
            while(matrix[i].size() > (size_t)k){
                s hell = matrix[i].back();
                matrix[i].pop_back();
                st.push(hell);
            }
            while(matrix[i].size() < (size_t)k and st.size() > 0){
                s hell = st.top();
                st.pop();
                int kk = (i- hell.val%m + m)%m;
                ans += kk;
                matrix[i].push_back({hell.loc,hell.val + kk});
            }
        }
    }

    vector<int> arr(n);
    for(int i=0;i<m;i++)
        for(size_t j=0;j<matrix[i].size();j++){
            s hell = matrix[i][j];
            arr[hell.loc] = hell.val;
        }

    for(int i = 0; i< n;i++)
        cout << arr[i] << " ";

    cout << endl;
}

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--)solve();
}


#include<bits/stdc++.h>
#define dout if(debug) cout<<" "

using namespace std;

int debug = 1;

typedef unsigned long long int ulli;
typedef unsigned int ui;
typedef pair<int,int> mp;
typedef vector<vector<int> > matrix;

const int mod = 1e9+7;
struct s{
    int loc;
    int val;
};

void solve(){
    int n,m,k;
    cin>>n>>m;
    k = n/m;

    vector< vector<s> > matrix(m);

    for(int i=0;i<n;i++){
        int temp;
        cin>>temp;
        matrix[temp%m].push_back({i,temp});
    }

    stack<s> st;
    int ans = 0;
    int tt = 2;
    while(tt--){
        for(int i=0;i<m;i++){
            while(matrix[i].size() > (size_t)k){
                s hell = matrix[i].back();
                matrix[i].pop_back();
                st.push(hell);
            }
            while(matrix[i].size() < (size_t)k and st.size() > 0){
                s hell = st.top();
                st.pop();
                int kk = i-hell.val%m;
                ans += kk;
                matrix[i].push_back({hell.loc,hell.val + kk});
            }
        }
    }

    cout << ans << endl;
    vector<int> arr(n);
    for(int i=0;i<m;i++)
        for(size_t j=0;j<matrix[i].size();j++){
            s hell = matrix[i][j];
            arr[hell.loc] = hell.val;
            //dout << i << " " << j << " " << hell.loc << " " << hell.val << endl;
        }

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

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--)solve();
}


#include<bits/stdc++.h>
#define dout if(debug) cout<<" "

using namespace std;

int debug = 1;

typedef long long int ulli;
typedef unsigned int ui;
typedef pair<int,int> mp;
#define int ulli

struct s{
    int loc;
    int val;
};

void solve(){
    int n,m,k;
    cin>>n>>m;
    k = n/m;
    vector<int> vec(m,0);
    vector<int> free(m,0);
    vector< vector<s> > matrix(m);

    for(int i=0;i<n;i++){
        int temp;
        cin>>temp;
        vec[temp%m]++;
        matrix[temp%m].push_back({i,temp});
    }

    int ans = 0;
    for(int tt = 0;tt<2;tt++)
    for(int i=0;i<m;i++){
        if(vec[i] > k)
            free[i]+=vec[i]-k;
        else {
            for(int j=i-1;j>=0;j--){
                while(free[j] > 0 and vec[i]<k){
                    ans += (i-j+m)%m;
                    vec[i]++;
                    free[j]--;
                }
                if(vec[i] >= k) break;
            }
            for(int j=m-1;j>i;j--) {
                while(free[j] > 0 and vec[i]<k){
                    ans += (i-j+m)%m;
                    vec[i]++;
                    free[j]--;
                }
                if(vec[i] >= k) break;
            }
        }
    }
    cout << ans << endl;

    stack<s> st;
    int tt = 2;
    while(tt--){
        for(int i=0;i<m;i++){
            while(matrix[i].size() > (size_t)k){
                s hell = matrix[i].back();
                matrix[i].pop_back();
                st.push(hell);
            }
            while(matrix[i].size() < (size_t)k and st.size() > 0){
                s hell = st.top();
                st.pop();
                int kk = (i- hell.val%m + m)%m;
                matrix[i].push_back({hell.loc,hell.val + kk});
            }
        }
    }

    vector<int> arr(n);
    for(int i=0;i<m;i++)
        for(size_t j=0;j<matrix[i].size();j++){
            s hell = matrix[i][j];
            arr[hell.loc] = hell.val;
        }

    for(int i = 0; i< n;i++)
        cout << arr[i] << " ";

    cout << endl;
}

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--)solve();
}


#include<bits/stdc++.h>
#define dout if(debug) cout<<" "

using namespace std;

int debug = 1;

typedef long long int ulli;
typedef unsigned int ui;
typedef pair<int,int> mp;
#define int ulli

struct s{
    int loc;
    int val;
};

void solve(){
    int n,m,k;
    cin>>n>>m;
    k = n/m;

    vector< vector<s> > matrix(m);

    for(int i=0;i<n;i++){
        int temp;
        cin>>temp;
        matrix[temp%m].push_back({i,temp});
    }

    stack<s> st;
    int ans = 0;
    int tt = 2;
    while(tt--){
        for(int i=0;i<m;i++){
            while(matrix[i].size() > (size_t)k){
                s hell = matrix[i].back();
                matrix[i].pop_back();
                st.push(hell);
            }
            while(matrix[i].size() < (size_t)k and st.size() > 0){
                s hell = st.top();
                st.pop();
                int kk = (i- hell.val%m + m)%m;
                ans += kk;
                matrix[i].push_back({hell.loc,hell.val + kk});
            }
        }
    }

    cout << ans << endl;

    vector<int> arr(n);
    for(int i=0;i<m;i++)
        for(size_t j=0;j<matrix[i].size();j++){
            s hell = matrix[i][j];
            arr[hell.loc] = hell.val;
        }

    for(int i = 0; i< n;i++)
        cout << arr[i] << " ";

    cout << endl;
}

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--)solve();
}


#include<bits/stdc++.h>
#define dout if(debug) cout<<" "

using namespace std;

int debug = 0;

typedef long long int ulli;
typedef unsigned int ui;
typedef pair<int,int> mp;
#define int ulli

struct s{
    int loc;
    int val;
};

void solve(){
    int n,m,k;
    cin>>n>>m;
    k = n/m;

    vector<int> vec(m,0);
    vector<int> free(m,0);
    vector< vector<s> > matrix(m);

    for(int i=0;i<n;i++){
        int temp;
        cin>>temp;
        vec[temp%m]++;
        matrix[temp%m].push_back({i,temp});
    }

    int ans = 0;
    int frrr = 0;
    int ops = 0;
    int opz = 0;
    for(int tt = 0;tt<2;tt++)
    for(int i=0;i<m;i++){
        if(vec[i] > k){
            free[i]+=vec[i]-k;
            frrr += vec[i] - k;
        }
        else if(vec[i] < k and frrr > 0) {
            for(int j=i-1;j>=0;j--){
                if(vec[i] >= k or frrr <= 0) break;
                while(free[j] > 0 and vec[i]<k){
                    int hell = (i-j+m)%m;
                    int go = 0;
                    if(free[j] >= k-vec[i]){
                        go = k - vec[i];
                    } else {
                        go = free[j];
                    }
                    ans += hell*go;
                    vec[i]+=go;
                    free[j]-=go;
                    frrr -= go;
                    ops ++;
                }
                opz++;
                if(vec[i] >= k or frrr <= 0) break;
            }
            if(vec[i] >= k or frrr <= 0) break;
            for(int j=m-1;j>i;j--) {
                if(vec[i] >= k or frrr <= 0) break;
                while(free[j] > 0 and vec[i]<k){
                    int hell = (i-j+m)%m;
                    int go = 0;
                    if(free[j] >= k-vec[i]){
                        go = k - vec[i];
                    } else {
                        go = free[j];
                    }
                    ans += hell*go;
                    vec[i]+=go;
                    free[j]-=go;
                    frrr -= go;
                    ops ++;
                }
                opz++;
                if(vec[i] >= k or frrr <= 0) break;
            }
        }
    }

    stack<s> st;
    int tt = 2;
    ans = 0;
    int opss = 0;
    while(tt--){
        for(int i=0;i<m;i++){
            while(matrix[i].size() > (size_t)k){
                s hell = matrix[i].back();
                matrix[i].pop_back();
                st.push(hell);
            }
            while(matrix[i].size() < (size_t)k and st.size() > 0){
                s hell = st.top();
                st.pop();
                int kk = (i- hell.val%m + m)%m;
                ans += kk;
                matrix[i].push_back({hell.loc,hell.val + kk});
                opss++;
            }
        }
    }
    //if(n == 200000) debug = 1;
    dout << ops<< " " << opz << " " << opss << endl;
    cout << ans << endl;

    vector<int> arr(n);
    for(int i=0;i<m;i++)
        for(size_t j=0;j<matrix[i].size();j++){
            s hell = matrix[i][j];
            arr[hell.loc] = hell.val;
        }

    for(int i = 0; i< n;i++)
        cout << arr[i] << " ";

    cout << endl;
}

signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    while(t--)solve();
}