fork download
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. using namespace std;
  5. const int N=500005;
  6. const int INF=0x7FFFFFFF;
  7. int n,e;
  8. int S[N];
  9. int Maxi[N];
  10. int F[2][N];
  11. struct edge{int x,y;edge *next;}g[N],*ls[N];
  12. int max(int x,int y){return x>y?x:y;}
  13.  
  14. void addedge(int x,int y){
  15. g[++e].x=x; g[e].y=y; g[e].next=ls[x]; ls[x]=&g[e];
  16. }
  17.  
  18. void dp(){
  19. int i,Max;
  20. edge *t;
  21. for (i=n;i>=1;i--){
  22. F[0][i]=0;
  23. F[1][i]=1;
  24. Max=-INF;
  25. for (t=ls[i];t;t=t->next){
  26. F[0][i]+=F[0][t->y];
  27. F[1][i]+=F[0][t->y];
  28. if (-F[0][t->y]+F[1][t->y]>Max){
  29. Max=-F[0][t->y]+F[1][t->y];
  30. Maxi[i]=t->y;
  31. }
  32. }
  33. if (Max>0) F[0][i]+=Max;
  34. else Maxi[i]=0;
  35. }
  36. }
  37.  
  38. void output(){
  39. int i,cnt;
  40. S[1]=0;
  41. for (i=1;i<=n;i++)
  42. for (edge *t=ls[i];t;t=t->next)
  43. if (!S[i] && t->y==Maxi[i])
  44. S[t->y]=1;
  45. else
  46. S[t->y]=0;
  47. cnt=0;
  48. for (i=1;i<=n;i++)
  49. cnt+=S[i];
  50. cout << (long long)(cnt)*1000 << "\n";
  51. bool first=true;
  52. for (i=1;i<=n;i++)
  53. if (S[i]){
  54. if (!first) printf(" ");
  55. printf("%d",i);
  56. first=false;
  57. }
  58. puts("");
  59. }
  60.  
  61. int main(){
  62. int Tc;
  63. scanf("%d",&Tc);
  64. while (Tc--){
  65. scanf("%d",&n);
  66. e=0; memset(ls,0,sizeof(ls));
  67. for (int fa,i=2;i<=n;i++){
  68. scanf("%d",&fa);
  69. addedge(fa,i);
  70. }
  71. dp();
  72. output();
  73. if (Tc) puts("");
  74. }
  75. }
Time limit exceeded #stdin compilation error #stdout -1s 18352KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:63: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
prog.cpp:65: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
prog.cpp:68: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
stdout
0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0


0