#include <bits/stdc++.h>
using namespace std;
const int sz = 3e5 + 300;
const int inf = 2e9;
int a[sz], b[sz];
int status[sz];
set<pair<int, int> > freea, freeb, now1a, diff, diff2;
void makeFree(int i) {
  status[i] = 0;
  freea.insert(make_pair(a[i], i));
  freeb.insert(make_pair(b[i], i));
}
void del1(int i) {
  now1a.erase(make_pair(a[i], i));
  diff.erase(make_pair(b[i] - a[i], i));
}
void del0(int i) {
  freea.erase(make_pair(a[i], i));
  freeb.erase(make_pair(b[i], i));
}
void del2(int i) { diff2.erase(make_pair(b[i] - a[i], i)); }
void makeTwo(int i) {
  status[i] = 2;
  diff2.insert(make_pair(b[i] - a[i], i));
}
void makeOne(int i) {
  status[i] = 1;
  now1a.insert(make_pair(a[i], i));
  diff.insert(make_pair(b[i] - a[i], i));
}
int main() {
  int n, w;
  scanf("%d%d", &n, &w);
  for (int i = 0; i < n; i++) scanf("%d%d", &a[i], &b[i]);
  for (int i = 0; i < n; i++) freea.insert(make_pair(a[i], i));
  for (int i = 0; i < n; i++) freeb.insert(make_pair(b[i], i));
  for (int i = 0; i < w; i++) {
    int d1 = inf;
    if (!now1a.empty()) {
      d1 = -now1a.rbegin()->first;
      d1 += freeb.begin()->first;
    }
    int d2 = inf;
    if (!freea.empty()) {
      d2 = freea.begin()->first;
    }
    int d3 = inf;
    if (!now1a.empty()) {
      d3 = diff.begin()->first;
    }
    int d4 = inf;
    if (!diff2.empty() && !freea.empty()) {
      d4 = -diff2.rbegin()->first;
      d4 += freeb.begin()->first;
    }
    int best = min(min(d1, d4), min(d2, d3));
    if (best == d1) {
      int worst = now1a.rbegin()->second;
      int two = freeb.begin()->second;
      makeFree(worst);
      del1(worst);
      makeTwo(two);
      del0(two);
    } else {
      if (best == d2) {
        int t = freea.begin()->second;
        makeOne(t);
        del0(t);
      } else if (best == d3) {
        int move = diff.begin()->second;
        del1(move);
        makeTwo(move);
      } else {
        int to1 = diff2.rbegin()->second;
        int to2 = freeb.begin()->second;
        del2(to1);
        makeOne(to1);
        del0(to2);
        makeTwo(to2);
      }
    }
  }
  long long sum = 0;
  for (int i = 0; i < n; i++) {
    if (status[i] == 1) sum += a[i];
    if (status[i] == 2) sum += b[i];
  }
  cout << sum << endl;
  for (int i = 0; i < n; i++) printf("%d", status[i]);
}
