function get_partitionr(ss::Vector{Int})::Vector{Vector{Vector{Int}}}
# print('ss=', ss)
if length(ss) <= 1
return [[ss]];
end
out = Vector{Vector{Vector{Int}}}();
to_max = div(2^length(ss),2) - 1;
# println("to_max=", to_max)
for i in 0:to_max
# print('i=', i)
ii = i;
parts = [Vector{Int}(), Vector{Int}()];
for item in ss
push!(parts[(ii&1) + 1], item);
ii >>= 1;
end
# println("parts=", parts)
bb = get_partitionr(parts[2]);
# println("bb=", bb)
for b in bb
c = [parts[1]]::Vector{Vector{Int}};
if length(b[1]) > 0
append!(c, b);
end
# println("c=", c)
push!(out, c);
end
end
return out
end
println("julia version")
part = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]::Vector{Int}
lr = get_partitionr(part)
println(length(lr))
println(typeof(lr))
println(
@views lr[1:10])