fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. int main(){
  6. int m, n;
  7. cin >> m >> n;
  8. for (int i = 1; i <= m; i++){
  9. for (int j = 1; j <= n; j++){
  10. cout << (abs(1 + 3*i + j) % 4 == 0 ? '+' : (char)('0' + abs(1 + 3*i + j) % 4));
  11. }
  12. cout << endl;
  13. }
  14. return 0;
  15. }
Runtime error #stdin #stdout 0.01s 3464KB
stdin
Standard input is empty
stdout
123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+123+