Нужно написать алгоритм выборки уникальных значений ID пользователей

Михаил18 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
21.05.2020

Нужно написать алгоритм выборки уникальных значений ID пользователей "От кого – кому", в каждой итерации равной количеству id.

Данные по каждой выборке сохраняются в БД, и каждая последующая выборка сравнивается с предыдущими. 

На входе - массив id (отправители и получатели - одни и те же). Количество ID может меняться (могут добавляться или удаляться), поэтому каждая операция сравнения должна учитывать предыдущие результаты. "Отправитель" не может являться "получателем". Отправитель и получатель в каждой итеррации не повторяются. Например: 

I (1-2, 2-3, 3-4, 4-1)

II (1-3, 2-4, 3-1, 4-2)

II (1-4, 2-1, 3-2, 4-3)

При достижения лимита, "отправителю" добавляется индекс, после этого, он считается уникальным "отправителем". Количество пар строго должно равняться количеству ID в массиве.

III(1a-2, 2a-3, 3a-4, 4a-1)

IV (1a-3, 2a-4, 3-5, 4a-2, 5-1)

...

PS предусмотреть вариант, что бы не выпадала комбинация, когда "отправитель" является единственным вариантом получателя 

1-2, 2-3, 3-1 – 4-?