import 'dart:io';
void sort012List(List<int> lst) {
var lo = 0;
var curr = 0;
var hi = lst.length - 1;
while (curr <= hi) {
switch (lst[curr]) {
case 0:
var tmp = lst[lo];
lst[lo] = lst[curr];
lst[curr] = tmp;
lo++;
curr++;
break;
case 1:
curr++;
break;
case 2:
var tmp = lst[curr];
lst[curr] = lst[hi];
lst[hi] = tmp;
hi--;
break;
}
}
}
void main() {
List<int> lst = [1, 2, 2, 0, 1, 1, 0, 2, 0, 1, 0, 0, 1];
sort012List(lst);
for (var i = 0; i < lst.length; i++) {
stdout.write((lst[i]).toString() + " ");
}
}
/*
run:
0 0 0 0 0 1 1 1 1 1 2 2 2
*/