import
sys
def
ShowPartition(
sum
, arr) :
print
(
"First partition: "
, end
=
'')
for
i
in
range
(
sum
[
0
]
+
1
) :
print
(arr[i] , end
=
" "
)
print
(
"\nSecond partition: "
, end
=
'')
for
i
in
range
(
sum
[
0
]
+
1
,
sum
[
1
]
+
1
) :
print
(arr[i] , end
=
" "
)
print
(
"\nThird partition: "
, end
=
'')
for
i
in
range
(
sum
[
1
]
+
1
,
sum
[
2
]
+
1
) :
print
(arr[i] , end
=
" "
)
print
(
"\nSum: "
, end
=
'')
print
(
sum
[
3
])
def
MaximumSumPartition(arr) :
i
=
0
j
=
0
k
=
0
n
=
len
(arr)
sum
=
[
0
]
*
4
for
i
in
range
(
0
,
4
):
sum
[i]
=
0
s1
=
0
s2
=
0
s3
=
0
s
=
-
sys.maxsize
-
1
x
=
0
y
=
0
z
=
0
for
i
in
range
(
0
, n
-
2
,
1
):
s1
+
=
1
^ arr[i]
x
=
i
for
j
in
range
(i
+
1
, n
-
1
,
1
) :
s2
+
=
2
^ arr[j]
y
=
j
for
k
in
range
(j
+
1
, n,
1
) :
s3
+
=
3
^ arr[k]
z
=
k
if
(s1
+
s2
+
s3 > s) :
s
=
s1
+
s2
+
s3
sum
[
0
]
=
x
sum
[
1
]
=
y
sum
[
2
]
=
z
sum
[
3
]
=
s
return
sum
arr
=
[
2
,
4
,
7
,
1
,
8
,
7
,
2
]
sum
=
MaximumSumPartition(arr);
ShowPartition(
sum
, arr);