#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
int n, m;
struct Gift {
  int a, b;
} s[N];
struct Object {
  int id, price, num;
};
bool operator<(Object a, Object b) {
  double k1 = 1.0 * a.price / a.num;
  double k2 = 1.0 * b.price / b.num;
  if (k1 == k2) return a.num < b.num;
  return k1 > k2;
}
priority_queue<Object> q;
Object loc1, loc2;
int cnt[N];
long long res = 0, chg = 0;
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &s[i].a, &s[i].b);
    if (s[i].a <= s[i].b - s[i].a) {
      q.push((Object){i, s[i].a, 1});
      q.push((Object){i, s[i].b - s[i].a, 1});
    } else
      q.push((Object){i, s[i].b, 2});
  }
  while (!q.empty() && m > 0) {
    Object tmp = q.top();
    q.pop();
    cnt[tmp.id] += tmp.num;
    m -= tmp.num, res += tmp.price;
  }
  if (m == -1) {
    Object tmp;
    tmp.price = 1e9 + 7;
    while (!q.empty()) {
      if (q.top().num == 2 && s[q.top().id].a < tmp.price)
        tmp = (Object){q.top().id, s[q.top().id].a, 1};
      if (q.top().num == 1 && q.top().price < tmp.price) tmp = q.top();
      q.pop();
    }
    if (!q.empty()) tmp = q.top(), q.pop();
    for (int i = 1; i <= n; ++i) {
      if (cnt[i] == 1) {
        if (chg < s[i].a) {
          loc1 = (Object){i, s[i].a, 2};
          loc2 = (Object){i, 0, 1};
          chg = loc1.price - loc2.price;
        }
      }
      if (cnt[i] != 2) continue;
      if (!loc1.id) {
        loc1 = (Object){i, s[i].b, 2};
        if (s[i].a < tmp.price)
          loc2 = (Object){i, s[i].a, 1};
        else
          loc2 = tmp;
        chg = loc1.price - loc2.price;
      } else {
        if (chg < s[i].b - min(s[i].a, tmp.price)) {
          loc1 = (Object){i, s[i].b, 2};
          if (s[i].a < tmp.price)
            loc2 = (Object){i, s[i].a, 1};
          else
            loc2 = tmp;
          chg = loc1.price - loc2.price;
        }
      }
    }
  }
  cnt[loc1.id] -= 2, cnt[loc2.id]++, res -= chg;
  printf("%lld\n", res);
  for (int i = 1; i <= n; ++i) printf("%d", cnt[i]);
  printf("\n");
  return 0;
}
