Determine se dois números somam um valor alvo

Dados dois arrays de números inteiros sem valores repetidos e um valor alvo, determine se existe um par de números cuja soma seja igual ao valor alvo. Um número do par deve vir do primeiro array e o outro, do segundo. Retorne true se esse par existir e false caso contrário.

Exemplos

Program.SumOfTwo(new[] { 1, 2 }, new[] { 4, 5, 6 }, 5) // true

Program.SumOfTwo(new[] { 1, 2 }, new[] { 4, 5, 6 }, 8) // true

Program.SumOfTwo(new[] { 1, 2 }, new[] { 4, 5, 6 }, 3) // false

Program.SumOfTwo(new[] { 1, 2 }, new[] { 4, 5, 6 }, 9) // false

Notas

Os valores não se repetem dentro de cada array de entrada.