Implement three generic utilities:
1. `identity<T>(value: T): T` — returns the value as-is.
2. `first<T>(arr: T[]): T | null` — returns the first element, or null for empty arrays.
3. `merge<A, B>(a: A, b: B): A & B` — shallow-merges two objects.
Then implement solve(fn, ...args) that dispatches to the right function.
Examples
identity(42) → 42first([1, 2, 3]) → 1first([]) → nullmerge({ a: 1 }, { b: 2 }) → { a: 1, b: 2 }Sample tests