using System.Collections.Generic;
private readonly record struct ItemData(string id, int level);
private static void Merge(List<ItemData> field)
public static void Main(string[] args)
Console.WriteLine("Success!");
private static void Test1()
var field = new List<ItemData>{ new("apple", 1), new("apple", 1) };
Assert(field, new List<ItemData> { new("apple", 2) });
private static void Test2()
var field = new List<ItemData>
Assert(field, new List<ItemData>
private static void Test3()
var field = Enumerable.Repeat(new ItemData("abc", 1), 256).ToList();
Assert(field, new List<ItemData>
private static void Test4()
var field = Enumerable.Repeat(new ItemData("abc", 1), 260).ToList();
Assert(field, new List<ItemData>
private static void Test5()
Enumerable.Repeat(new ItemData("abc", 1), 260)
.Concat(Enumerable.Repeat(new ItemData("eee", 1), 100)).ToList();
Assert(field, new List<ItemData>
private static void Assert(List<ItemData> actual, List<ItemData> expected)
if (actual.Except(expected).Any() || expected.Except(actual).Any())
Console.WriteLine($"Actual: {string.Join(", ", actual)}");
Console.WriteLine($"Expected: {string.Join(", ", expected)}");
throw new Exception("Test failed");