func_code_string: #include <bits/stdc++.h>   using namespace std;   long long same(vector<pair<long long, int> > &x) {     int n = x.size();     return (x[n - 1].first + x[n - 2].first) - (x[0].first + x[1].first);   }   long long diff(vector<pair<long long, int> > &x, long long h) {     int n = x.size();     long long minx = min(x[0].first + x[1].first + h, x[1].first + x[2].first);     long long maxx =         max(x[n - 1].first + x[n - 2].first, x[0].first + x[n - 1].first + h);     return maxx - minx;   }   int main() {     int n, h;     cin >> n >> h;     vector<pair<long long, int> > a(n);     for (int i = 0; i < (int)(n); i++) {       long long tmp;       cin >> tmp;       a[i].first = tmp;       a[i].second = i;     }     sort(a.begin(), a.end());     long long h1 = same(a);     long long h2 = diff(a, h);     cout << min(h1, h2) << endl;     if (h1 < h2) {       for (int i = 0; i < (int)(n); i++) printf( %d  , 1);     } else {       int head = a[0].second;       for (int i = 0; i < (int)(n); i++) {         int ret = (i == head) ? 1 : 2;         printf( %d  , ret);       }     }     puts(  );     return 0;   }   