using System.Collections.Generic;
List<double> moneyValues = new List<double> {
0.01, 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750,
1000, 5000, 10000, 25000, 50000, 75000, 100000, 200000, 300000, 400000, 500000, 750000, 1000000
int mid = moneyValues.Count / 2;
List<double> leftColumn = moneyValues.GetRange(0, mid);
List<double> rightColumn = moneyValues.GetRange(mid, mid);
HashSet<int> selected = new HashSet<int>();
RenderTable(leftColumn, rightColumn, selected);
Console.WriteLine("\nEnter the number of the amount to mark as selected (or 'q' to quit):");
string input = Console.ReadLine()?.Trim();
if (input?.ToLower() == "q")
if (int.TryParse(input, out int idx))
if (idx >= 0 && idx < leftColumn.Count)
else if (idx >= leftColumn.Count && idx < moneyValues.Count)
Console.WriteLine("Invalid number. Press any key to continue...");
Console.WriteLine("Invalid input. Press any key to continue...");
static void RenderTable(List<double> leftColumn, List<double> rightColumn, HashSet<int> selected)
Console.WriteLine("Deal or No Deal Table");
Console.WriteLine("=====================");
for (int i = 0; i < leftColumn.Count; i++)
string leftValue = selected.Contains(i) ? $"[X] ${leftColumn[i]:N2}" : $" ${leftColumn[i]:N2}";
string rightValue = selected.Contains(i + leftColumn.Count) ? $"[X] ${rightColumn[i]:N2}" : $" ${rightColumn[i]:N2}";
Console.WriteLine($"{leftValue,-20} {rightValue,-20}");