I'd use the cte approach. I'm confident it can be compressed a little further but this would be my starting point:
WITH cte_originalquery AS
(
SELECT 1 AS Number UNION ALL
SELECT 2 AS Number UNION ALL
SELECT 3 AS Number
),
cte_originalqueryExpanded AS -- add two columns to be used for output order
(
SELECT
1 AS Sort,
Number AS Sort2,
Number
FROM cte_originalquery
),
cte_helperquery AS-- add the required number of "go" lines using separate cte
(
SELECT
2 AS Sort,
Number AS Sort2,
'GO' AS AddLine
FROM cte_originalquery
),
cte_merged AS-- merge the two queries
(
SELECT
Sort,
Sort2,
AddLine
FROM cte_helperquery
UNION ALL
SELECT
Sort,
Sort2,
CAST(Number AS VARCHAR(10))
FROM cte_originalqueryExpanded
)
-- final output, ordered properly
SELECT AddLine as final
FROM cte_merged
ORDER BY Sort2,Sort