#include <cstdio>
#include <cctype>
#include <ctime>
#include <random>
#include <iterator>
#include <algorithm>
#include <iostream>

std::vector<int> generate_random(const int n, const int m, const int k)
{
   if ((n < m) || (m < k))
      return std::vector<int>();

   std::random_device source;
   std::mt19937 generator(source());
   std::uniform_int_distribution<> distribution(0, n - (m - 1) * k);

   std::vector<int> result_list;
   result_list.reserve(m);

   for (int i = 0; i < m; ++i)
   {
      result_list.push_back(distribution(generator));
   }

   std::sort(std::begin(result_list),std::end(result_list));

   for (int i = 0; i < m; ++i)
   {
      result_list[i] += (i * k);
   }

   return result_list;
}


int main()
{
   std::vector<int> result = generate_random(1000000,1000,100);

   std::copy(std::begin(result),
             std::end(result),
             std::ostream_iterator<int>(std::cout,"\n"));

   for (int i = 0; i < result.size(); ++i)
   {
      for (int j = 0; j < result.size(); ++j)
      {
         if ((i != j) && std::abs(result[i] - result[j]) < 100)
         {
            std::cout << "error: " << result[i] << "\t" << result[j] << "\n";
         }
      }
   }

   return 0;
}