#include <bits/stdc++.h>
using namespace std;
const int dr[] = {1, 0, -1, 0, 1, 1, -1, -1};
const int dc[] = {0, 1, 0, -1, 1, -1, -1, 1};
const double eps = 1e-9;
const int INF = 0x7FFFFFFF;
const long long INFLL = 0x7FFFFFFFFFFFFFFFLL;
const double pi = acos(-1);
inline void getint(int &num) {
  int a;
  scanf("%d", &a);
  num = a;
}
int D[10005], key[10005];
int n, m, k, ans;
vector<int> vc;
int main() {
  cin >> n >> m >> k;
  int BATAS = n + m + 1;
  for (int(i) = (0), _t = (k); i < (_t); ++(i)) vc.push_back(1);
  for (int(i) = (1), _t = (n); i <= (_t); ++(i)) {
    key[i] = 1;
    D[i] += k;
  }
  int lst = 0;
  {};
  for (int(i) = (1), _t = (BATAS); i < (_t); ++(i)) {
    {};
    if (key[i] == 0) {
      vc.push_back(i - 1);
      lst = (((lst) > (i + n - 2)) ? (lst) : (i + n - 2));
      for (int(j) = (i - 1),
          _t = ((((BATAS) < (i - 1 + n)) ? (BATAS) : (i - 1 + n)));
           j < (_t); ++(j)) {
        ++D[j];
        key[j] = 1;
      }
    }
    {};
    if (D[i] < k) {
      int PLUS = k - D[i];
      for (int(j) = (D[i]), _t = (k); j < (_t); ++(j)) vc.push_back(i);
      lst = (((lst) > (i + n - 1)) ? (lst) : (i + n - 1));
      for (int(j) = (i), _t = ((((BATAS) < (i + n)) ? (BATAS) : (i + n)));
           j < (_t); ++(j)) {
        D[j] += PLUS;
        key[j] = 1;
      }
    }
    {};
    {};
  }
  {};
  if (lst == BATAS - 1) vc.push_back(BATAS - 1);
  printf("%d\n", (int)vc.size());
  for (int(i) = (0), _t = ((int)vc.size()); i < (_t); ++(i))
    printf((i) ? " %d" : "%d", vc[i]);
  puts("");
  return 0;
}
