#include <bits/stdc++.h>
using namespace std;
bool debug;
const int inf = 1e9 + 5;
const int nax = 1e5 + 5;
char czas[100];
int n, m, t;
int wyn[nax], kon[nax];
vector<int> pocz[nax];
int zmien() {
  int godz = 60 * 60;
  int min = 60;
  return (czas[0] - 48) * 10 * godz + (czas[1] - 48) * godz +
         (czas[3] - 48) * 10 * min + (czas[4] - 48) * min +
         (czas[6] - 48) * 10 + czas[7] - 48;
}
int main(int argc, char* argv[]) {
  debug = argc > 1;
  scanf("%d%d%d", &n, &m, &t);
  for (int i = 0; i <= (n)-1; ++i) {
    scanf(" %s", czas);
    int x = zmien();
    pocz[x].push_back(i);
    kon[x + t]++;
  }
  int ile_teraz = 0;
  int ost = 0;
  int pop_kon = -10;
  bool mozna = false;
  for (int i = 0; i <= (100000) - 1; ++i) {
    ile_teraz -= kon[i];
    for (auto j : pocz[i]) {
      if (ile_teraz < m) {
        ++ile_teraz;
        ++ost;
      } else {
        --kon[pop_kon];
      }
      wyn[j] = ost;
      pop_kon = i + t;
    }
    if (ile_teraz == m) mozna = true;
  }
  if (!mozna) {
    puts("No solution");
    return 0;
  }
  printf("%d\n", ost);
  for (int i = 0; i <= (n)-1; ++i) printf("%d\n", wyn[i]);
  return 0;
}
