awk '{for (i=1; i<NF; i++) print $i, $(i+1)}' filename
EDIT: para refletir sua nova exigência
awk '{for (i=1; i<=NF; i++) printf("%d %d\n", $i, $(i+1))}' filename
# ----------------^
Isso tira proveito do fato de que o awk trata os valores não inicializados (aqui $(NF+1)
) como uma string vazia (no contexto da string) ou zero (no contexto numérico).