class Fixnum
	ROMAN_NUMBERS = {
		1000 =>	"M",
		900 =>	"CM",
		500 =>	"D",
		400 =>	"CD",
		100 =>	"C",
		90 =>	"XC",
		50 =>	"L",
		40 =>	"XL",
		10 =>	"X",
		9 =>	"IX",
		5 =>	"V",
		4 =>	"IV",
		1 =>	"I",
	}

	def romanize
		n = self
		roman = ""
		ROMAN_NUMBERS.each do |value, letter|
			roman << letter*(n / value)
			n = n % value
		end
		return roman
	end
end

must_have = "MDCLXVI"
pandigitals = []
0.upto(2000) do |x|
	romanized = x.romanize
	valid = true
	must_have.each_char do |char|
		valid = false if valid and not romanized.include? char
	end
	pandigitals.push(x) if valid
end

pandigitals_one_letter = []
pandigitals.each do |x|
	char_counts = Hash.new 0
	x.romanize.each_char do |char|
		char_counts[char] += 1
	end

	valid = true
	char_counts.each do |char, num|
		valid = false if num != 1
	end
	pandigitals_one_letter.push(x) if valid
end

puts pandigitals.to_s
puts pandigitals_one_letter.to_s
