using System.Collections.Generic;
static void Main(string[] args)
var a = new[] { "a", "b" };
var b = new[] { "1", "2", "3" };
foreach (var strs in Interleave(a, b))
foreach (var str in strs)
static IEnumerable<IEnumerable<T>> Interleave<T>(T[] a, T[] b)
foreach (var rest in Interleave(a[1..], b))
yield return Enumerable.Concat(new[] { a[0] }, rest);
foreach (var rest in Interleave(a, b[1..]))
yield return Enumerable.Concat(new[] { b[0] }, rest);