#include <iostream>
#include <vector>

void generate_all_random_permutations( int min, int max, std::size_t length,
                                        std::ostream& stm,
                                        std::vector<int> generated_so_far = {}  )
{
    if( length == 0 )
    {
        for( int v : generated_so_far ) stm << v ;
        stm << '\n' ;
    }
    else
    {
        for( int v = min ; v <= max ; ++v )
        {
           generated_so_far.push_back(v) ;
           generate_all_random_permutations( min, max, length-1, stm, generated_so_far ) ;
           generated_so_far.pop_back() ;
        }
    }
}

int main()
{
    generate_all_random_permutations( 1, 3, 4, std::cout ) ;
}
