input: Write a python function to generate all possible combinations with replacement of a given list and length.
  assert generate_combinations_with_replacement(['a', 'b', 'c', 'd'], 3) == ['aaa', 'aab', 'aac', 'aad', 'abb', 'abc', 'abd', 'acc', 'acd', 'add', 'bbb', 'bbc', 'bbd', 'bcc', 'bcd', 'bdd', 'ccc', 'ccd', 'cdd', 'ddd']
  assert generate_combinations_with_replacement(['1', '2'], 2) == ['11', '12', '22']
  assert generate_combinations_with_replacement(['x', 'y', 'z'], 1) == ['x', 'y', 'z']
output: def generate_combinations_with_replacement(elements, length):
      from itertools import combinations_with_replacement
      return [''.join(combination) for combination in combinations_with_replacement(elements, length)]