#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> g;
vector<vector<bool>> c;
vector<bool> used;
int how;
bool ok;
void dfs(int v, int parent) {
  used[v] = true;
  how++;
  for (int i = (0); i < (int((g[v]).size())); ++i) {
    if (g[v][i] != parent && used[g[v][i]]) {
      ok = true;
      break;
    }
    if (!used[g[v][i]]) dfs(g[v][i], v);
  }
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  int start = 1;
  int start2 = n + m + 1;
  vector<int> res;
  int it = n;
  if (k == 1) {
    it = 1;
    while (true) {
      res.push_back(it);
      it += n - 1;
      if (it >= start2) break;
    }
    cout << int((res).size()) << endl;
    for (int i = (0); i < (int((res).size())); ++i)
      printf("%d%c", res[i], i == int((res).size()) - 1 ? '\n' : ' ');
    return 0;
  }
  while (true) {
    res.push_back(it);
    it += n;
    if (it >= start2) break;
  }
  it = 1;
  while (true) {
    for (int i = (0); i < (k - 1); ++i) res.push_back(it);
    it += n;
    if (it >= start2) break;
  }
  res.push_back(1);
  sort((res).begin(), (res).end());
  cout << int((res).size()) << endl;
  for (int i = (0); i < (int((res).size())); ++i)
    printf("%d%c", res[i], i == int((res).size()) - 1 ? '\n' : ' ');
  return 0;
}
