A sequential program consists of the following five statements, S1 through S5. Considering each statement as a separate process, clearly identify input set Ii, and output set Oi of each process. Restructure the program using Bernstein's conditions in order to achieve maximum parallelism between processes. If any pair of processes cannot be executed in parallel, specify which of the three conditions is not satisfied.
S1: A = B + C
S2: C = B X D
S3: S = 0
S4: Do I = A, 100
S = S + X(I)
End Do
S5: IF (S > 1000) C = C x 2