Proving that a set and operation form a group 
$S$ is a nonempty finite set with associative operation $∗$ such that, $$∀ a, b ∈ S, ∃ c,d ∈ S\text{ s.t. }a ∗ c = b \text{ and }d ∗ a = b$$Prove that $(S, ∗)$ is a group.

I'm stuck on a difficult problem from some PSET I found online (I'm self studying Algebra).
I have been trying to show the existence of an identity in $S$ on $*$ as I think the rest will follow, but I cannot seem to make any progress.
My work so far is not very solid, but it is an attempt to show that there is at least one $e$ exists such that
$$a ∗ e = e ∗ a = b, \text{ where }a,b\in S$$
Reasoning as follows:
From the problem statement:
$$∀ (a, b) ∈ S × S\ ∃ (c, d) ∈ S × S:\ a*c = d*a = b$$
I would like to show that at least one such $(a, b)$ has $c = d$.
I try a proof by contradiction:
Assume
$$∀ (a, b) ∈ S × S\ \exists (c, d) ∈ S × S\ c ≠ d:\ a*c = d*a = b$$
Since $S$ is finite, so let $|S| = n$.
$$\therefore|S × S| = n^2$$
But there are $n(n-1)$ pairs of the form $(c, d) ∈ S × S$ such that $c ≠ d$.
From here I am trying to use the pigeonhole principle to show that there exists $(a,x)$ and $(b,y)$ such that
$$(a = b\text{ and }x ≠ y)\text{ or }(x = y\text{ and }a ≠ b)$$
that satisfy
$$a*c = c*a = x$$
$$b*c = c*b = y$$
leading to an obvious contradiction.
I think there is a way to derive this existence, since intuitively there are $n$ "excess" pairs after relating pairs $(a, b)$ one-to-one with pairs $(c, d)$.
I would greatly appreciate a hint.
Thanks!
 A: The conditions can be restated that left and right multiplication by every element of your set is bijective. So, $x\to a x$ is a permutation $\pi_a$ of your set. Since every permutation has finite order, $\pi_a^k = \pi_{a^k}$ is the identity permutation for some $k,$ and that shows that $a^k$ is the (left) identity element. Similarly $a^l$ is the right identity, so your set has a left and right identity. A standard argument shows that these are the same. Since left and right multiplications are bijective, it shows that you have a left and a right inverse for every element (and and another standard argument shows that those are the same.)
A: In the end I wrote a proof far simpler than what I was trying to do above. Might be helpful to someone at some point so:
From the problem statement:
Existence of right and left identities for each element
∀  ∈, ∃ e, e' ∈:
ae = a and e'a = a
Right and left identities are universal
Now:
∀ b ∈ , ∃ x, y ∈:
ax = b and ya = b
⇒ e'ax = e'b and yae = be
⇒ ax = b = e'b and ya = b = be
In other words, e is a left identity for all elements of S, and e' is a right identity for all elements of S.
Equivalence of right and left identities
∃ q ∈:
qe = e' ⇔ q = e'
e'e = e'
Similarly, ∃ p ∈:
e'p = e ⇔ p = e
e'e = e
so:
e = e'
Uniqueness of the identity
We have shown that if a left-inverse for one element is a left-inverse for all elements, and that such a left-inverse is also a right inverse. Now suppose ∃ p ∈:
al = la = a for some a ∈
It follows that:
el = e
But el = l, since e is an identity for all elements
So l = e.
Existance of inverses
For any element a ∈,  ∃ ar-1, al-1 ∈ :
aar-1 = e
al-1a = e
⇒ al-1(aar-1) = al-1
⇒ ar-1 = al-1
So for all a ∈ , we have a-1 ∈ 
Uniqueness of inverses
Suppose ab = e
⇒ a-1(ab) = a-1e
⇒ b = a-1
So each element has a unique inverse.
Closure
let xy = z
⇒ x = zy-1
From the problem statement, we know there exists p in S:
x = py-1
⇒ xy = p
⇒ z = p
Hence {S, ∗} is a group
Please feel free to suggest edits, and do let me know if I made a mistake.
