diff --git a/ABA/aba_assignment.pdf b/ABA/aba_assignment.pdf new file mode 100644 index 00000000..f3fdbaae Binary files /dev/null and b/ABA/aba_assignment.pdf differ diff --git a/DIP/03.md b/DIP/03.md new file mode 100644 index 00000000..6020373d --- /dev/null +++ b/DIP/03.md @@ -0,0 +1,8 @@ +# Intensity Transform + +# Contrast Streching and histogtram streching + + + + + \ No newline at end of file diff --git a/DIP/A1.pdf b/DIP/A1.pdf new file mode 100644 index 00000000..327c4f9f Binary files /dev/null and b/DIP/A1.pdf differ diff --git a/DIP/A1_resources.zip b/DIP/A1_resources.zip new file mode 100644 index 00000000..d0b9636e Binary files /dev/null and b/DIP/A1_resources.zip differ diff --git a/DIP/A1_resources/A1_resources/color_detect.py b/DIP/A1_resources/A1_resources/color_detect.py new file mode 100644 index 00000000..3f3cf80b --- /dev/null +++ b/DIP/A1_resources/A1_resources/color_detect.py @@ -0,0 +1,7 @@ +import numpy as np +import cv2 + +cv2.imread('./rose.jpeg') + + +# def top_k_color(im,k): diff --git a/DIP/A1_resources/A1_resources/hist-match-1.jpg b/DIP/A1_resources/A1_resources/hist-match-1.jpg new file mode 100644 index 00000000..66884999 Binary files /dev/null and b/DIP/A1_resources/A1_resources/hist-match-1.jpg differ diff --git a/DIP/A1_resources/A1_resources/hist-match-2.jpg b/DIP/A1_resources/A1_resources/hist-match-2.jpg new file mode 100644 index 00000000..a24d1337 Binary files /dev/null and b/DIP/A1_resources/A1_resources/hist-match-2.jpg differ diff --git a/DIP/A1_resources/A1_resources/hist_equal.jpg b/DIP/A1_resources/A1_resources/hist_equal.jpg new file mode 100644 index 00000000..a83b7239 Binary files /dev/null and b/DIP/A1_resources/A1_resources/hist_equal.jpg differ diff --git a/DIP/A1_resources/A1_resources/hist_equal2.jpg b/DIP/A1_resources/A1_resources/hist_equal2.jpg new file mode 100644 index 00000000..90b131b8 Binary files /dev/null and b/DIP/A1_resources/A1_resources/hist_equal2.jpg differ diff --git a/DIP/A1_resources/A1_resources/histogram_equalization.jpg b/DIP/A1_resources/A1_resources/histogram_equalization.jpg new file mode 100644 index 00000000..9085e9b4 Binary files /dev/null and b/DIP/A1_resources/A1_resources/histogram_equalization.jpg differ diff --git a/DIP/A1_resources/A1_resources/lena.bmp b/DIP/A1_resources/A1_resources/lena.bmp new file mode 100644 index 00000000..e73a7f80 Binary files /dev/null and b/DIP/A1_resources/A1_resources/lena.bmp differ diff --git a/DIP/A1_resources/A1_resources/palm-leaf-1.jpg b/DIP/A1_resources/A1_resources/palm-leaf-1.jpg new file mode 100644 index 00000000..4443b18b Binary files /dev/null and b/DIP/A1_resources/A1_resources/palm-leaf-1.jpg differ diff --git a/DIP/A1_resources/A1_resources/palm-leaf-2.jpg b/DIP/A1_resources/A1_resources/palm-leaf-2.jpg new file mode 100644 index 00000000..dfd998d4 Binary files /dev/null and b/DIP/A1_resources/A1_resources/palm-leaf-2.jpg differ diff --git a/DIP/A1_resources/A1_resources/rose.jpeg b/DIP/A1_resources/A1_resources/rose.jpeg new file mode 100644 index 00000000..b46569d1 Binary files /dev/null and b/DIP/A1_resources/A1_resources/rose.jpeg differ diff --git a/DS/23-ssspaths.ppt b/DS/23-ssspaths.ppt new file mode 100644 index 00000000..8aedb7d2 Binary files /dev/null and b/DS/23-ssspaths.ppt differ diff --git a/DS/A2.zip b/DS/A2.zip new file mode 100644 index 00000000..02d7800e Binary files /dev/null and b/DS/A2.zip differ diff --git a/DS/AVL.cc b/DS/AVL.cc new file mode 100644 index 00000000..0b5cceca --- /dev/null +++ b/DS/AVL.cc @@ -0,0 +1,253 @@ +#include +#include + +struct node{ + struct node* left; + struct node* right; + int key; + int h; +}; + +int max(int a,int b) +{ + return a>b?a:b; +} + +int height(struct node* a) +{ + if(a==NULL) + return 0; + else + return a->h; +} + +struct node* clock(struct node* root) +{ + struct node* child=root->left; + struct node* subtree=root->left->right; + + root->left=subtree; + child->right=root; + + + root->h=max(height(root->left),height(root->right))+1; + child->h=max(height(child->left),height(child->right))+1; + + + return child; +} + + +struct node* aclock(struct node* root) +{ + struct node* child=root->right; + struct node* subtree=root->right->left; + + root->right=subtree; + child->left=root; + + root->h=max(height(root->left),height(root->right))+1; + child->h=max(height(child->left),height(child->right))+1; + + return child; +} + + +void print(struct node* root) +{ + if(root==NULL) + return; + + print(root->left); + + printf("val::%d heigh:%d\n",root->key,height(root)); + + print(root->right); + +} + + +//insert +struct node* insert(struct node* root,int t) +{ + + if(root==NULL) + { + struct node* newnode=(struct node*)malloc(sizeof(struct node)); + newnode->right=NULL; + newnode->left=NULL; + newnode->key=t; + newnode->h=1; + return root=newnode; + } + + + if(root->key >= t) + root->left=insert(root->left,t); + + else if(root->key < t) + root->right=insert(root->right,t); + + // printf("check root:%d\n",root->key); + // print(root->left); + // print(root->right); + + // printf("\n"); + + if(height(root->left) > height(root->right) + 1) + { + + if(height(root->left->left) < height(root->left->right)) + root->left=aclock(root->left); + + root=clock(root); + } + + else if(height(root->right) > height(root->left) + 1) + { + if(height(root->right->right) < height(root->right->left)) + root->right=clock(root->right); + + root=aclock(root); + } + + root->h=max(height(root->left),height(root->right))+1; + // printf("height::%d\n",root->h); + + return root; + +} + +struct node* delnode(struct node* root,struct node* head) +{ + if(root->left==NULL) + { + head->key=root->key; + + + if(root->right!=NULL) + return root->right; + else + return NULL; + } + + root->left=delnode(root->left,head); + + if(height(root->left) > height(root->right) + 1) + { + + if(height(root->left->left) < height(root->left->right)) + root->left=aclock(root->left); + + root=clock(root); + } + + else if(height(root->right) > height(root->left) + 1) + { + if(height(root->right->right) < height(root->right->left)) + root->right=clock(root->right); + + root=aclock(root); + } + + root->h=max(height(root->left),height(root->right))+1; + // printf("height::%d\n",root->h); + + + + return root; + +} + +struct node* del(struct node* root,int val) +{ + if(root==NULL) + {printf("Nothing to delete\n");return root;} + + if(root->key > val) + root->left=del(root->left,val); + else if(root->key < val) + root->right=del(root->right,val); + + else + { + printf("here\n"); + if(root->left==NULL&&root->right==NULL) + return root=NULL; + + else if(root->left==NULL) + root=root->right; + + else if(root->right==NULL) + root=root->left; + else + root=delnode(root,root); + + } + + + + if(height(root->left) > height(root->right) + 1) + { + + if(height(root->left->left) < height(root->left->right)) + root->left=aclock(root->left); + + root=clock(root); + } + + else if(height(root->right) > height(root->left) + 1) + { + if(height(root->right->right) < height(root->right->left)) + root->right=clock(root->right); + + root=aclock(root); + } + + root->h=max(height(root->left),height(root->right))+1; + // printf("height::%d\n",root->h); + + return root; + +} + + +//search + +int main() +{ +struct node* head = NULL; + + + int t=0; + while(t!=-1) + { + scanf("%d",&t); + + if(t==-1) + break; + + head=insert(head,t); + + print(head); + + } + + t=0; + while(t!=-1) + { + scanf("%d",&t); + + if(t==-1) + break; + + head=del(head,t); + + print(head); + + } + + + + return 0; +} diff --git a/DS/BIT.cpp b/DS/BIT.cpp new file mode 100644 index 00000000..7e2ae6e1 --- /dev/null +++ b/DS/BIT.cpp @@ -0,0 +1,77 @@ +#include + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; +int BIT[N],A[N]; + +int sum(int x) +{ + int ret=0; + while(x) + { + ret ^= BIT[x]; + x -= x&(-x); + } + return ret; +} + +void update(int x, int val) // add val to A[x] +{ + while(x < N) + { + BIT[x] ^= val; + x += x&(-x); + } +} + +int query(int l, int r) +{ + return sum(r)^sum(l-1); +} + +int main() +{ + return 0; +} diff --git a/DS/LCA.ppt b/DS/LCA.ppt new file mode 100644 index 00000000..2b1effa4 Binary files /dev/null and b/DS/LCA.ppt differ diff --git a/DS/Resume.docx b/DS/Resume.docx new file mode 100644 index 00000000..32ed9285 Binary files /dev/null and b/DS/Resume.docx differ diff --git a/DS/a.out b/DS/a.out new file mode 100755 index 00000000..1801e558 Binary files /dev/null and b/DS/a.out differ diff --git a/DS/attachments.zip b/DS/attachments.zip new file mode 100644 index 00000000..4c28d5a2 Binary files /dev/null and b/DS/attachments.zip differ diff --git a/DS/attachments/BIT.cpp b/DS/attachments/BIT.cpp new file mode 100644 index 00000000..871de769 --- /dev/null +++ b/DS/attachments/BIT.cpp @@ -0,0 +1,86 @@ +//itisalways42 +#include + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; +int BIT[N],A[N]; + +int sum(int x) +{ + int ret=0; + while(x) + { + ret ^= BIT[x]; + x -= x&(-x); + } + return ret; +} + +void update(int x, int val) // add val to A[x] +{ + while(x < N) + { + BIT[x] ^= val; + x += x&(-x); + } +} + +int query(int l, int r) +{ + return sum(r)^sum(l-1); +} + + + + + + + + + +int main() +{ + return 0; +} diff --git a/DS/attachments/code.cpp b/DS/attachments/code.cpp new file mode 100644 index 00000000..b9635e95 --- /dev/null +++ b/DS/attachments/code.cpp @@ -0,0 +1,104 @@ +//Tanuj Khattar +#include +#include + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) +#define FOR(i, a, b) for (int i = (a); i < (b); ++i) +#define REP(i, n) FOR(i, 0, n) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); +const int N = int(1e5)+1; +const int Q = int(1e5)+1; +const int MAX = int(1e9); +const LL MAXV = LL(1e14); +LL BIT[N]; +void update(int x,LL add){ + for(;x= V){ + ans = m; + r = m - 1; + } + else l = m + 1; + } + dout(ans); + } + } + return 0; +} diff --git a/DS/attachments/kruskals.cpp b/DS/attachments/kruskals.cpp new file mode 100644 index 00000000..0783f7f6 --- /dev/null +++ b/DS/attachments/kruskals.cpp @@ -0,0 +1,91 @@ +//itisalways42 +#include + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; + +int dsu[N],rank[N]; +int find(int u) +{ + if(dsu[u] == u) return u; + return dsu[u] = find(dsu[u]); +} +void update(int u, int v) +{ + u = find(u); v = find(v); + if(u==v) return; + if(rank[u] > rank[v]) swap(u,v); + dsu[u] = v; + rank[v] = max(rank[v],rank[u]+1); +} + +int main() +{ + int n; si(n); si(m); + vector< pair > > E; + for(int i=1; i<=n; i++) dsu[i] = i, rank[i] = 1; + for(int i=0; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; +const int LOGN = 20; + +VI G[N]; +int par[LOGN][N], H[N]; + +void dfs(int u, int p, int h=0) +{ + par[0][u] = p; + H[u] = h; + for(auto v: G[u]) + { + if(v == u) continue; + dfs(v,u,h+1); + } +} + +int lca(int u, int v) +{ + if(H[u] > H[v]) swap(u,v); + int d = H[v]-H[u]; + for(int i=LOGN-1; i>=0; i--) + { + if(d&(1<=0; i--) + { + int p1,p2; + p1 = par[i][u]; p2 = par[i][v]; + if(p1 != p2) + { + u = p1; + v = p2; + } + } + return par[0][u]; + + + + + + + + +} + +int main() +{ + int n; si(n); + for(int i=0; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; +const int LOGN = 20; +int rmq[LOGN][N],A[N],P[LOGN],X[N]; + +int query(int l, int r) +{ + int d = r-l+1; + int len = P[X[d]]; + int ret = rmq[X[d]][r]; + ret = min(ret, rmq[X[d]][l+len-1]); + return ret; +} + +int main() +{ + P[0] = 1; X[1] = 0; + for(int i=1; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; +int in[N],out[N]; + +void dfs0(int u, int p=-1) +{ + in[u] = 0; + for(auto v:G[u]) + if(v!=p) + dfs0(v,u), in[u] = max(in[u],in[v]+1); +} + +void dfs(int u, int p=-1) +{ + int mx[2]; mx[0] = mx[1] = -1; + for(auto v:G[u]) + { + if(v==p) continue; + if(in[v] > mx[0]) mx[1] = mx[0], mx[0] = in[v]; + else if(in[v] > mx[1]) mx[1] = in[v]; + } + for(auto v:G[u]) + { + if(v==p) continue; + int tmp=0; + if(mx[1] != -1) tmp = 2+(in[v]==mx[0]?mx[1]:mx[0]); + out[v] = max(out[u]+1,tmp); + dfs(v,u); + } +} + +int dsu[N],rank[N]; +int find(int u) +{ + if(dsu[u] == u) return u; + return dsu[u] = find(dsu[u]); +} +bool update(int u, int v) +{ + u = find(u); v = find(v); + if(u==v) return false; + //if(rank[u] > rank[v]) swap(u,v); + dsu[u] = v; + return true; + //rank[v] = max(rank[v],rank[u]+1); +} + +int main() +{ + int n; si(n); + for(int i=1; i<=n; i++) dsu[i] = i, rank[i] = 1; + for(int i=0; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; +int in[N],out[N]; + +bool cmp(int a, int b) +{ + return a v; + v.size(); + v.push_back(10); + v.pop_back(); + v.resize(20); + v[i]; + + sort(v.begin(),v.end(),cmp); + lower_bound(v.begin(),v.end(),val) - v.begin(); + upper_bound(v.begin(),v.end(),val) - v.begin(); + binary_search(v.begin(),v.end(),val); + + pair p; + p.first; + p.second; + + vector< pair > vp; + vp[i]; + + priority_queue pq; + pq.push(10); + pq.top(); + pq.pop(); + priority_queue, greater > min_heap; + + set S; + multiset MS; + S.insert(10); + //S.erase(10); + S.find(9); + *S.begin(); + + map M; + M[5] = 10; + *M.find(5); + pair x = *M.begin();// x.first = 5, x.second = 10 + + unordered_set H; + H.insert(10); // O(1) + H.erase(10); + H.find(10); + + unordered_map HM; + HM[5] = 10; + + + if(S.find(v) != S.end()); + + string s = "hello"; + s.push_back('0'); + s += "hello"; + + vector VS; + VS[i][j]; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + return 0; +} diff --git a/DS/code.cpp b/DS/code.cpp new file mode 100644 index 00000000..b9635e95 --- /dev/null +++ b/DS/code.cpp @@ -0,0 +1,104 @@ +//Tanuj Khattar +#include +#include + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) +#define FOR(i, a, b) for (int i = (a); i < (b); ++i) +#define REP(i, n) FOR(i, 0, n) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); +const int N = int(1e5)+1; +const int Q = int(1e5)+1; +const int MAX = int(1e9); +const LL MAXV = LL(1e14); +LL BIT[N]; +void update(int x,LL add){ + for(;x= V){ + ans = m; + r = m - 1; + } + else l = m + 1; + } + dout(ans); + } + } + return 0; +} diff --git a/DS/dij.cc b/DS/dij.cc new file mode 100644 index 00000000..585701bd --- /dev/null +++ b/DS/dij.cc @@ -0,0 +1,135 @@ +// dijisktras algorithm for shortest path + +#include +#define N 100009 +#define INF 1e9 +using namespace std; + +// long long int* prim(int n,int m,vector G[],vector W[]) +// { +// int vis[N]; +// set > que; +// long long int dis[N]; +// int u,v,len; +// long long int w; + +// for (int i = 0; i <=n; ++i) {vis[i]=0;dis[i]=INF;} + +// for (int u = 0; u <=n; ++u) +// { +// len=G[u].size(); +// for (int j = 0; j G[],vector W[]) +{ + int vis[N]; + set > que; + long long int dis[N]; + int u,v,len; + long long int w; + + for (int i = 0; i <=n; ++i) {vis[i]=0;dis[i]=INF;} + + for (int u = 0; u <=n; ++u) + { + len=G[u].size(); + for (int j = 0; j G[N]; + vector W[N]; + + int u,v,m,n; + long long int w; + + scanf("%d %d",&n,&m); + for (int i = 0; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; + +int dsu[N],rank[N]; +int find(int u) +{ + if(dsu[u] == u) return u; + return dsu[u] = find(dsu[u]); +} +void update(int u, int v) +{ + u = find(u); v = find(v); + if(u==v) return; + if(rank[u] > rank[v]) swap(u,v); + dsu[u] = v; + rank[v] = max(rank[v],rank[u]+1); +} + +int main() +{ + int n; si(n); si(m); + vector< pair > > E; + for(int i=1; i<=n; i++) dsu[i] = i, rank[i] = 1; + for(int i=0; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; +const int LOGN = 20; + +VI G[N]; +int par[LOGN][N], H[N]; + +void dfs(int u, int p, int h=0) +{ + par[0][u] = p; + H[u] = h; + for(auto v: G[u]) + { + if(v == u) continue; + dfs(v,u,h+1); + } +} + +int lca(int u, int v) +{ + if(H[u] > H[v]) swap(u,v); + int d = H[v]-H[u]; + for(int i=LOGN-1; i>=0; i--) + { + if(d&(1<=0; i--) + { + int p1,p2; + p1 = par[i][u]; p2 = par[i][v]; + if(p1 != p2) + { + u = p1; + v = p2; + } + } + return par[0][u]; +} + +int main() +{ + int n; si(n); + for(int i=0; i +#include + +long int n,m; + +int cp(const void *a,const void *b) +{ + +return *(int*)a-*(int*)b; +} + +long int search(long int a[],long int x,long int low,long int high) +{ +if(low>=high) +{ +if(a[low]<=x) +return n-low-1; +else +return n-low; +} + +long int mid=low+(high-low)/2; + +if(a[mid]>x) +search(a,x,low,mid); + +else if(a[mid]<=x) +search(a,x,mid+1,high); +} + +int main() +{ +long int i,j; +long int a[100010],b[100010]; + +scanf("%ld",&n); + +for(i=0;i +int main() +{ +int sum[3]={0,0,0}; +int j,i,t,a[100009][3],h[3]; + +scanf("%d",&t); + +while(t--) +{ +sum[0]=0; +sum[1]=0; +sum[2]=0; + +for(j=0;j<3;j++) +{ +scanf("%d",&h[j]); + +for(i=0;i=sum[1]&&sum[0]>=sum[2]) +{sum[0]-=a[h[0]-1][0];h[0]--;} + +else if(sum[1]>=sum[0]&&sum[1]>=sum[2]) +{sum[1]-=a[h[1]-1][1];h[1]--;} + +else if(sum[2]>=sum[1]&&sum[2]>=sum[0]) +{sum[2]-=a[h[2]-1][2];h[2]--;} + +} + + +printf("%d\n",sum[0]); + +} +return 0; +} diff --git a/DS/p11.c b/DS/p11.c new file mode 100644 index 00000000..63accbfa --- /dev/null +++ b/DS/p11.c @@ -0,0 +1,213 @@ +#include +#include + +long long int i,n,len; +long long int time,sum; + +struct pair +{ + long long int t; + long long int l; +}; + +int cmp(const void *a,const void *b) +{ + + struct pair* aa=(struct pair *)malloc(sizeof(struct pair)); + struct pair* bb=(struct pair *)malloc(sizeof(struct pair)); + aa=(struct pair *)a; + bb=(struct pair *)b; + + if(aa->t > bb->t) + return 1; + if(aa->t == bb->t) + return 0; + else + return -1; +} + +void swap(struct pair* a,struct pair* b) +{ + struct pair* c=(struct pair*)malloc(sizeof(struct pair)); + + *c=*a; + *a=*b; + *b=*c; +} + + +void hin(struct pair heap[],long long int o) +{ + + while(o>1&&heap[o>>1].l>=heap[o].l) + { +// printf("o:%lld\n",o); + swap(&heap[o>>1],&heap[o]); + o=o>>1; + } + +} +/* +void hrem(struct pair heap[]) +{ + printf("hrem len:%d\n",len); + long long int ll,rr; + long long int o=1; + swap(&heap[1],&heap[len-1]); + len--; + + while(o=len&&heap[ll].l=heap[rr].l) + {printf("case2\n");swap(&heap[rr],&heap[o]);o=o<<1;o++;continue;} + + break; + } + +} +*/ + + +void hrem(struct pair heap[]) +{ + +//printf("hrem\n"); + +//printf("len:%lld \n",len); +//printf("heap[%lld].l:%lld heap[%lld].l:%lld\n",1,heap[1].l,len-1,heap[len-1].l); +swap(&heap[1],&heap[len-1]); +//printf("heap[%lld].l:%lld heap[%lld].l:%lld\n",1,heap[1].l,len-1,heap[len-1].l); +long long int o=1,ll=2,rr=3; +len--; + +//printf("len:%lld o:%lld ll:%lld rr:%lld \n",len,o,ll,rr); + +while(2*o1) + { + time+=heap[1].l; + sum+=(time-heap[1].t); + + hrem(heap); + } + + else + time=p[i].t; + + +// for(int j=1;j1) + { + time+=heap[1].l; + sum+=(time-heap[1].t); + hrem(heap); +// for(int j=1;j +#include + +#define M 1000009 +#define M1 1000159 +#define M2 1000969 + +int n; +unsigned long long int a[100009],check[1000009]; +int hash[1000009]; + +// void print_bin(long long int x) +// { +// printf("x:%lld\n",x); + +// for(;x>0;x=x>>1) +// { +// // printf("x:%lld\n",x); +// if(x&1) +// printf("1"); +// else +// printf("0"); + +// } + +// printf("\n"); + +// } + + + +int main() +{ + int i,j,t,len,ch[128]; +unsigned long long int pos[64],r; + char s[100009]; + +for(i=0;i<10;i++) + ch[i+'0']=i; + +for(j=0;j<26;j++,i++) + ch[j+'A']=i; + +for(j=0;j<26;j++,i++) + ch[j+'a']=i; + +//for (i = 0;i<128; ++i) +// printf("ch[%d]:%d\n",i,ch[i]); + +pos[0]=1; +for (i = 1; i <64; ++i) +pos[i]=pos[i-1]<<1; + +//for (i = 0;i<64; ++i) +// printf("pos[%d]:%llu\n",i,pos[i]); + + +scanf("%d",&t); + + +while(t--) +{ + for(i=0;i<1000009;i++) + {hash[i]=0;check[i]=-1;} + + scanf("%d",&n); + for(i=0;i + +int n,a,b,count2,count1; +long int x[1000009],y[1000009],time1,time2; +long int p[1000009],q[1000009]; +int ind1[1000009],ind2[1000009]; +void swap(int *a,int *b) +{ +// printf("a:%ld b=%ld\n",*a,*b); + *b= *a+*b-(*a=*b); +} + +long int max(long int a,long int b) +{ + return a>b?a:b; +} + + +void heapify(long int arr[],int ind[],int len) +{ + int i=len; + while(i>0&&arr[ind[((len+1)>>1)-1]]>arr[ind[len]]) + { +// printf("a:%ld b=%ld\n",arr[len],arr[((len+1)>>1)-1]); + swap(&ind[len],&ind[((len+1)>>1)-1]); +// printf("a:%ld b=%ld\n",arr[len],arr[((len+1)>>1)-1]); + len=len>>1; + } +} + + +void heaper(long int arr[],int ind[],int i,int n) +{ +if(2*(i)+1>n) +return; + +int l,r; +l=2*i+1; +r=2*i+2; + +//printf("i:%d l:%d r:%d\n",i,l,r); + +if(r>=n){ +if(arr[ind[l]]<=arr[ind[i]]) +{swap(&ind[l],&ind[i]);heaper(arr,ind,l,n);}return;} + +if(arr[ind[l]]=arr[ind[r]]) +{ +//cout<<"2"<count2)||count1>=n) + time2=y[ind2[0]]; + +else +while(time1-x[ind1[0]]>=0) +{ +count1++; + + +if(time1>x[ind2[0]]) +{ +x[ind1[0]]+=time1; +time2=x[ind1[0]]; +} + +else +{ +time2=x[ind1[0]]; +x[ind1[0]]+=p[ind1[0]]; + +} + +if(count1>=n) +break; +heaper(x,ind1,0,a); + +for (i = 0; i < a;i++) +printf("x[%d]:%ld\n",ind1[i],x[ind1[i]]); +printf("count1:%d time1:%ld\n",count1,time1); +printf("count2:%d time2:%ld\n",count2,time2); + +} + +printf("time2:%ld y[%d]:%ld\n",time2,ind2[0],y[ind2[0]]); + + +if(time2-y[ind2[0]]<0||count2>=count1) + time1=x[ind1[0]]; + +else +while(time2-y[ind2[0]]>=0&&count2y[ind2[0]]) +{ +y[ind2[0]]+=time2; +time1=y[ind2[0]]; +} + +else +{ + time1=y[ind2[0]]; + y[ind2[0]]+=q[ind2[0]]; + +} +count2++; + +if(count2>=n) +{printf("count2:%d\n",count2); + break; +} + +heaper(y,ind2,0,b); + +for (i = 0; i < b;i++) +printf("y[%d]:%ld\n",ind2[i],y[ind2[i]]); +printf("count1:%d time1:%ld\n",count1,time1); +printf("count2:%d time2:%ld\n",count2,time2); + +} + +//printf("count1:%d count2:%d\n",count1,count2 ); +//printf("time1:%ld time2:%ld\n",time1,time2 ); + +} + +printf("%ld\n",time1); + return 0; +} \ No newline at end of file diff --git a/DS/p17.c b/DS/p17.c new file mode 100644 index 00000000..2083fefb --- /dev/null +++ b/DS/p17.c @@ -0,0 +1,124 @@ +#include + +int main() +{ + int aa,bb,lca,x,t,n,k,l,r,i,ind; + long int a[100009],b[100009]; + + scanf("%d",&t); + + while(t--) + { + + scanf("%d",&n); + + for(i=0;i=aa&&a[lca]<=bb) + break; + + if(lca>=n) + {printf("No\n"); + continue;} + +// printf("lca:%ld\n",a[lca]); + + l=0; + r=0; + + for(i=0;i=0;i--) + if(a[i]==b[1]) + { + l=1; + break; + } + + if(r==1&&l==0) + { + x=2; + for(i=ind+1;i=0&&x=0&&x + +#define max 100000009 +int main() +{ +int i,j,l,r,len,len1,len2,n,k,a[100009],b[100009],path1[100009],path2[100009],path[100009]; + +int t; +scanf("%d",&t); + +while(t--) +{ +// printf("t:%d\n",t); + + scanf("%d",&n); + for(i=0;il&&a[i]b[0]) + { + r=a[i]; + path1[len1]=a[i]; + len1++; + + } + + else if (a[i]==b[0]) + { + path1[len1]=a[i]; + len1++; + break; + } + + } + +// for(i=0;il&&a[i]b[k-1]) + { + r=a[i]; + path2[len2]=a[i]; + len2++; + + } + + else if (a[i]==b[k-1]) + { + path2[len2]=a[i]; + len2++; + break; + } + + } + + +// for(i=0;i0) + {path[len]=path1[i-1];len++;} + +while(j + +int main() +{ + int i,n,k,t,len,max; +int a[100009],st[100009],which[100009]; + + scanf("%d",&t); + + while(t--) + { + scanf("%d %d",&n,&k); + + for(i=0;i0) + { + st[len]=i; + len++; + + } + + else if(a[i]<0&&len>0) + { + + if(a[i]==-1*a[st[len-1]]) + { + if(which[st[len-1]-1]==-1) +{ + + which[i]=st[len-1]; + len--; + if(max + +long int min(long int a,long int b) +{ + return ab?a:b; +} + +int size(int r) +{ + int log=0; + while(r>0) + { + r=r>>1; + log++; + } + log++; +int len=1; + for(;log>0;log--) + len=len<<1; + + return len-1; +} + + + +int n; +long int x[100009],stg1[270009],stg2[270009]; + +long int build1(long int x[],int low,int high,long int stg[],int ind) +{ + int mid=low + (high-low)/2; + if(low>=high) + { + return stg[ind]=x[low]; + } + + return stg[ind]=min(build1(x,low,mid,stg,2*ind+1),build1(x,mid+1,high,stg,2*ind+2)); +} + +long int build2(long int x[],int low,int high,long int stg[],int ind) +{ + int mid=low + (high-low)/2; + if(low>=high) + { + return stg[ind]=x[low]; + } + + return stg[ind]=max(build2(x,low,mid,stg,2*ind+1),build2(x,mid+1,high,stg,2*ind+2)); +} + +void update1(long int x[],int low,int high,long int stg[],int ind,int pos,long int val) +{ + int mid=low+(high-low)/2; + // printf("ind:%d mid:%d pos:%d\n",ind,mid,pos); + if(low==high&&mid==pos) + { + stg[ind]=val; + while(ind>0&&(stg[((ind+1)>>1)-1]>stg[ind]||stg[((ind+1)>>1)-1]==x[pos])) + { + if(ind%2==0) + stg[((ind+1)>>1)-1]=min(stg[ind],stg[ind-1]); + else + stg[((ind+1)>>1)-1]=min(stg[ind],stg[ind+1]); + + ind=((ind+1)>>1)-1; + } + + return; + + } + +else if(lowpos) + update1(x,low,mid,stg,2*ind+1,pos,val); + +else if(low0&&(stg[((ind+1)>>1)-1]>1)-1]==x[pos])) + { + if(ind%2==0) + stg[((ind+1)>>1)-1]=max(stg[ind],stg[ind-1]); + else + stg[((ind+1)>>1)-1]=max(stg[ind],stg[ind+1]); + + ind=((ind+1)>>1)-1; + } + + return; + + } + +else if(lowpos) + update2(x,low,mid,stg,2*ind+1,pos,val); + +else if(lowmid) + return min(query1(arr,l,mid,stg,2*ind+1,low,mid),query1(arr,mid+1,r,stg,2*ind+2,mid+1,high)); + +else if(l<=mid&&r<=mid) + return query1(arr,l,r,stg,2*ind+1,low,mid); + +else if(l>mid&&r>mid) + return query1(arr,l,r,stg,2*ind+2,mid+1,high); +} + + +long int query2(long int arr[],int l,int r,long int stg[],int ind,int low,int high) +{ +int i,mid=low+(high-low)/2; + +// printf("low:%d mid:%d high:%d l:%d r:%d ind:%d\n",low,mid,high,l,r,ind); + +if(l==low&&r==high) + return stg[ind]; + +if(l<=mid&&r>mid) + return max(query2(arr,l,mid,stg,2*ind+1,low,mid),query2(arr,mid+1,r,stg,2*ind+2,mid+1,high)); + +else if(l<=mid&&r<=mid) + return query2(arr,l,r,stg,2*ind+1,low,mid); + +else if(l>mid&&r>mid) + return query2(arr,l,r,stg,2*ind+2,mid+1,high); +} + +int main() +{ + int i,m,len,ind,l,r; + long int val,ans; + char qq; +scanf("%d %d",&n,&m); + +for (i = 0; i < n; ++i) +scanf("%ld",&x[i]); + +build1(x,0,n-1,stg1,0); +build2(x,0,n-1,stg2,0); + +// len=size(n); +// printf("len:%d\n",len); + +// for(i=0;i0;m--) + { + scanf(" %c",&qq); + // printf("m:%d qq:%c\n",m,qq); + if(qq=='r') + { + scanf("%d %ld",&ind,&val); + update1(x,0,n-1,stg1,0,ind-1,val); + update2(x,0,n-1,stg2,0,ind-1,val); + x[ind-1]=val; + + // for(i=0;i + +void swap(long int arr[],int a,int b) +{ +int t; +t=arr[b]; +arr[b]=arr[a]; +arr[a]=t; +} + +void heapify(long int arr[],int i,int n) +{ +if(2*(i)+1>n) +return; + +int l,r; +l=2*i+1; +r=2*i+2; + + +//printf("i:%d l:%d r:%d\n",i,l,r); + + +if(r>n) +if(arr[l]>arr[i]) +{swap(arr,l,i);heapify(arr,l,n);} + +if(arr[l]>arr[i]&&r<=n&&arr[l]>=arr[r]) +{ +//cout<<"1"<arr[i]&&r<=n&&arr[l]=0;i--) +heapify(arr,i,n); + +n++; +} + + +//for(int i=0;i +#include + +int clr[100009],low,high; + +struct pair +{ +int first; +int second; +}; + +int cmp(const void* a,const void* b) +{ + return (((struct pair *)a)->first - ((struct pair *)b)->first); +} + +int main() +{ + int n,m,i,flag; + scanf("%d %d",&n,&m); + +struct pair* a=(struct pair*)malloc(sizeof(struct pair)*2*m); + + for(i=0;i +#include + +int n,m,clr[500009],deg[500009],u[500009],v[500009],cnt[500009],queue[1000009]; +int* G[500009]; + +int bfs(int x,int par) +{ +int low=0,high=0,r,i; +queue[high++]=x; +clr[x]=1; + +while(high>low) +{ + r=queue[low++]; +// printf("r:%d low:%d high:%d clr[%d]:%d\n",r,low,high,r,clr[r]); + + for(i=0;i +#include + +int maxsize,q,x,xx,len,pos,l1,r1,l2,r2,a[10][270009],c[10],b[10]; +char str[100009]; + +void build(int ind,int low,int high) +{ +int i,mid=low+(high-low)/2; + +if(maxsize0) +// printf("a[%d][%d]:%d ",i,2*ind+1,a[i][2*ind+1]); +// printf("\n"); + +build(2*ind+2,mid+1,high); + +// for(i=0;i<10;i++) +// if(a[i][2*ind+2]>0) +// printf("a[%d][%d]:%d ",i,2*ind+2,a[i][2*ind+2]); +// printf("\n"); + +for(i=0;i<10;i++) + a[i][ind]=a[i][2*ind+1]+a[i][2*ind+2]; + +// for(i=0;i<10;i++) +// if(a[i][ind]>0) +// printf("a[%d][%d]:%d ",i,ind,a[i][ind]); +// printf("\n"); + + +return; +} + +} + +void update(int ind,int low,int high,int p,int pos,int val) +{ +int i,mid; + +//printf("ind:%d low:%d mid:%d high:%d p:%d\n",ind,low,mid,high,p); +while(low<=high) +{ +mid=low+(high-low)/2; + + if(mid==p&&low==high) + { + //printf("ind2:%d\n",maxsize-len+p); + + while(ind>0) + { + + //printf("ind:%d\n",ind); + a[pos][ind]--; + a[val][ind]++; +// for(i=0;i<10;i++) +// if(a[i][ind]>0) +// printf("a[%d][%d]:%d ",i,ind,a[i][ind]); +// printf("\n"); +// printf("\n"); + ind=((ind+1)>>1)-1; + } +// printf("ind:%d\n",ind); + a[pos][0]--; + a[val][0]++; + +// for(i=0;i<10;i++) +// if(a[i][0]>0) +// printf("a[%d][%d]:%d ",i,ind,a[i][0]); +// printf("\n"); +// printf("\n"); + + break; + } + + +else if(low0) +// printf("a[%d][%d]:%d ",i,ind,a[i][ind]); +// printf("\n"); + + + + if(mid=p) + { + update(2*ind+1,low,mid,p,pos,val); + break; + + } + +} + +} + +} + +void query(int ind,int low,int high,int l,int r,int arr[]) +{ +int i,mid=low+(high-low)/2; +// printf("ind:%d low:%d mid:%d high:%d l=%d r:%d\n",ind,low,mid,high,l,r); + +// for(i=0;i<10;i++) +// if(arr[i]>0) +// printf("arr[%d]:%d\n",i,arr[i]); + +if(l==low&&r==high) +{ +// printf("l==low:%d r==high:%d\n",low,high); + + for(i=0;i<10;i++) + arr[i]+=a[i][ind]; + + +// for(i=0;i<10;i++) +// if(arr[i]>0) +// printf("arr[%d]:%d\n",i,arr[i]); + + +return; +} + +if(r>mid&&l<=mid) + { + query(2*ind+1,low,mid,l,mid,arr); + query(2*ind+2,mid+1,high,mid+1,r,arr); + + } + + +else if(l<=mid&&r<=mid) +{ +query(2*ind+1,low,mid,l,r,arr); +} + +else if(l>mid&&r>mid) +{ +query(2*ind+2,mid+1,high,l,r,arr); +} + +} + +int main() +{ + int i; + + scanf("%s",str); + len=strlen(str); + build(0,0,len-1); + +for (int j = 0; j <=maxsize; ++j) +{for(i=0;i<10;i++) + if(a[i][j]>0) + printf("a[%d][%d]:%d ",i,j,a[i][j]); + + printf("\n"); +} + + + scanf("%d",&q); + while(q--) + { + // printf("q:%d\n",q); + scanf("%d",&x); + + if(x==1) + { + + scanf("%d %d",&pos,&xx); + update(0,0,len-1,pos-1,str[pos-1]-'0',xx); + +// for (int j = 0; j <=maxsize; ++j) +// {for(i=0;i<10;i++) +// if(a[i][j]>0) +// printf("a[%d][%d]:%d ",i,j,a[i][j]); + +// printf("\n"); + + str[pos-1]=xx+'0'; + } + + + + // printf("%s\n",str); + + + + + + else if(x==2) + { + + for (i = 0; i < 10; ++i) + { + c[i]=b[i]=0; + } + + scanf("%d %d %d %d",&l1,&r1,&l2,&r2); + + query(0,0,len-1,l1-1,r1-1,c); + query(0,0,len-1,l2-1,r2-1,b); + + for(i=0;i<10;i++) + if(c[i]!=b[i]) + break; + if(i==10) + printf("YES\n"); + else + printf("NO\n"); + + } + + + + + } + + + + return 0; +} \ No newline at end of file diff --git a/DS/p21_bit.c b/DS/p21_bit.c new file mode 100644 index 00000000..d7d206c8 --- /dev/null +++ b/DS/p21_bit.c @@ -0,0 +1,134 @@ +#include +#include + +int n,a[10][100009]; +char str[100009]; + +// void print() +// { +// for(int j=0;j<=n;j++) +// {for(int i=0;i<10;i++) +// if(a[i][j]>0) +// printf("a[%d][%d]:%d ",i,j,a[i][j]); +// printf("\n"); +// } +// } + + + +void update(int i,int val,int ini) +{ +//printf("ini:%d\n",ini); + while(i<=n&&i>0) + { + a[val][i]++; + a[ini][i]--; + i+=i&(-1*i); + } +} + + + +void query(int l,int r,int arr[]) +{ + int i; + + while(r>0) + { + for(i=0;i<10;i++) + arr[i]+=a[i][r]; + r-=r&(-1*r); + } + l--; + while(l>0) + { + for(i=0;i<10;i++) + arr[i]-=a[i][l]; + l-=l&(-1*l); + } + + return; +} + + + + +int main() +{ + int q,qq,pos,val,l,r,i; + int c[10],d[10]; + scanf("%s",str); + + n=strlen(str); + + for (i = 0; i < 10; ++i) + a[i][0]=0; + + int j; + for(i=1;i<=n;i++) + { + j=i; + while(j<=n&&j>0) + { + a[str[i-1]-'0'][j]++; + j+=j&(-1*j); + } +// print(); + } + + scanf("%d",&q); + + + while(q--) + { + scanf("%d",&qq); + if(qq==1) + { + scanf("%d %d",&pos,&val); +// printf("pos:%d val:%d\n",pos,val); + update(pos,val,str[pos-1]-'0'); + str[pos-1]=val+'0'; +// print(); + } + + else + { + for (i = 0; i < 10; ++i) + c[i]=d[i]=0; + + scanf("%d %d",&l,&r); + //query 1 +// printf("l:%d r:%d\n",l,r); + query(l,r,c); + + // for(i=0;i<10;i++) + // if(c[i]>0) + // printf("c[%d]:%d\n",i,c[i]); + + scanf("%d %d",&l,&r); + //query 2 +// printf("l:%d r:%d\n",l,r); + query(l,r,d); + + + // for(i=0;i<10;i++) + // if(d[i]>0) + // printf("d[%d]:%d\n",i,d[i]); + + for(i=0;i<10;i++) + if(c[i]!=d[i]) + break; + + if(i==10) + printf("YES\n"); + else + printf("NO\n"); + } + + + } + + + + return 0; +} diff --git a/DS/p21_gen.cpp b/DS/p21_gen.cpp new file mode 100644 index 00000000..42a7cdff --- /dev/null +++ b/DS/p21_gen.cpp @@ -0,0 +1,35 @@ +#include + +using namespace std; + +vector > v; + +int main(){ + int a,b,n=100000,q=500000; + srand(time(NULL)); + for(int i=1;i<=n;++i){ + cout<<(rand())%2; + } + cout<n) break; + v.push_back({i,i+10000}); + } + + random_shuffle(v.begin(), v.end()); + for(int i=1;i<=q;++i){ + if(rand()&1){ + cout<<"2 "; + a=(rand()%(v.size())); + b=(rand()%(v.size())); + cout< +#include + +#define M 1000000007 + +long long int ex,ans; +int n,m,ind; +int prime[170],deg[1000009],cnt[1000005],vis[1000009],a[1000009],v[1000009],u[1000009]; +int* G[20000009]; +int st[1000009],mark[1000009]; + +int dfs(int x) +{ +int i,max=a[x],r; + +vis[x]=1; +//printf("x:%d\n",x); + +for(i=0;imax) + max=r; + } + +} + +return max; + +} + +int main() +{ +int max,prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009}; +int count,prime_len=sizeof(prime)/sizeof(int); +//printf("%d\n",prime_len); + +int t,i,j; +int pow1[prime_len]; + +for (i = 0; i < 1000009; ++i) +mark[i]=0; + + + scanf("%d",&t); + + + +while(t--) +{ + ind=0; + scanf("%d %d",&n,&m); + ans=1; + + + for(i=1;i<=n;i++) + { + scanf("%d",&a[i]); + deg[i]=0; + cnt[i]=0; + vis[i]=0; + + } + + + + for(i=0;i1;j++) + { + count=0; + while(max%prime[j]==0) + { +// printf("max:%d prime[%d]:%d\n",max,j,prime[j]); + count++; + max/=prime[j]; +// printf("count:%d\n",count); + } + + if(count>pow1[j]) + pow1[j]=count; + + } + + if(max>1&&mark[max]==0) + { + mark[max]=1; + st[ind++]=max; + + } + + // for (int z = 0; z < prime_len; ++z) + // if(pow1[z]>0) + // printf("pow1[%d]:%d ",z,pow1[z]); + // printf("\n"); + +// printf("ans:%ld\n",ans); + + } + + for (i = 0; i +#include + +int main() +{ + + int a; + int b; + printf("5\n"); + +for (int i = 0; i < 5; ++i) +{ + a=rand()%100000; + b=rand()%100000; + +printf("%d %d\n",a,b); + +for (int j = 0; j < a; ++j) +{ + printf("%d \n",rand()%100000x); +} + +for (int z = 0; z < b; ++z) +{ + printf("%d %d\n",rand()%a+1,rand()%a+1); +} + + +} + + return 0; +} \ No newline at end of file diff --git a/DS/p23.c b/DS/p23.c new file mode 100644 index 00000000..c2cb09ef --- /dev/null +++ b/DS/p23.c @@ -0,0 +1,140 @@ +#include + +#define M1 31 +#define M 1000000007 + + +long long int pow1[100009],x; +long long int a[100009],ar[100009],hash1,hash2; +int ll[200009],rr[200009]; +char str[100009]; + +long long int inv(long long x, long long int y) +{ + long long sum = 1%M; + while(y>0) + { + //if b is odd + if(y&1) sum = (sum*x)%M; + x = (x*x)%M; + y >>= 1; // b = b/2 + } + return sum; +} + +int main() +{ + int i,j,n,q,k,ind; + + scanf("%d %d",&n,&q); + + scanf("%s",str); + + pow1[0]=1; + for ( i = 1; i < 100009; ++i) + {pow1[i]=M1*pow1[i-1];pow1[i]%=M;if(pow1[i]<0)pow1[i]+=M;} + +// for ( i = 0; i < n; ++i) + //printf("pow1[%d]:%lld\n",i,pow1[i]); + + a[0]=str[0]-'a'; + ar[0]=str[n-1]-'a'; + for ( i = 1; i < n; ++i) + { + x=(str[i]-'a')*pow1[i]; + x%=M; + a[i]=a[i-1]+x; + a[i]%=M; + if(a[i]<0) + a[i]+=M; + //printf("a[%d]:%lld str[%d]:%d\n",i,a[i],i,str[i]-'a'); + + x=(str[n-i-1]-'a')*pow1[i]; + x%=M; + ar[i]=ar[i-1]+x; + if(ar[i]<0) + ar[i]+=M; + //printf("ar[%d]:%lld str[%d]:%d\n",i,a[i],n-i-1,str[n-i-1]-'a'); + + } + + while(q--) + { + scanf("%d",&k); + for (i = 0; i < k; ++i) + {scanf("%d %d",&ll[i],&rr[i]); + ll[i]--; + rr[i]--; + } + + hash1=0; + ind=0; + for ( i = 0; i < k; ++i) + { +// printf("ll[%d]:%d rr[%d]:%d\n",i,ll[i],i,rr[i]); + + x=a[rr[i]]; + if(ll[i]>0) + x-=a[ll[i]-1]; + x%=M; + if(x<0) + x+=M; + x*=pow1[ind]; + x%=M; + if(x<0) + x+=M; + + x*=inv(pow1[ll[i]],M-2); + x%=M; + if(x<0) + x+=M; +// printf("x:%lld\n",x); + + hash1+=x; +// printf("hash1:%lld\n",hash1); + ind+=rr[i]-ll[i]+1; + } + + + hash2=0; + ind=0; + for ( i = k-1; i >=0; --i) + { x=ll[i]; + ll[i]=n-rr[i]-1; + rr[i]=n-x-1; + +// printf("ll[%d]:%d rr[%d]:%d\n",i,ll[i],i,rr[i]); + + x=ar[rr[i]]; + if(ll[i]>0) + x-=ar[ll[i]-1]; + x%=M; + if(x<0) + x+=M; + x*=pow1[ind]; + x%=M; + if(x<0) + x+=M; + + x*=inv(pow1[ll[i]],M-2); + x%=M; + if(x<0) + x+=M; + +// printf("x:%lld\n",x); + hash2+=x; +// printf("hash2:%lld\n",hash2); + + ind+=rr[i]-ll[i]+1; + } + + if(hash1==hash2) + printf("YES\n"); + else + printf("NO\n"); + + } + + + return 0; +} diff --git a/DS/p23_expo.c b/DS/p23_expo.c new file mode 100644 index 00000000..71163c97 --- /dev/null +++ b/DS/p23_expo.c @@ -0,0 +1,151 @@ +#include + +#define M1 31 +#define M 1000000007 + + +long long int x; +long long int a[100009],ar[100009],hash1,hash2; +int ll[200009],rr[200009]; +char str[100009]; + +long long int pow1(int y) +{ + long long sum = 1%M; + long int x=M1; + while(y>0) + { + //if b is odd + if(y&1) sum = (sum*x)%M; + x = (x*x)%M; + y >>= 1; // b = b/2 + } + return sum; +} + +long long int inv(long long x, long long int y) +{ + long long sum = 1%M; + while(y>0) + { + //if b is odd + if(y&1) sum = (sum*x)%M; + x = (x*x)%M; + y >>= 1; // b = b/2 + } + return sum; +} + +int main() +{ + int i,j,n,q,k,ind; + + scanf("%d %d",&n,&q); + + scanf("%s",str); + + +// for ( i = 0; i < n; ++i) + //printf("pow1[%d]:%lld\n",i,pow1(i)); + + a[0]=str[0]-'a'; + ar[0]=str[n-1]-'a'; + for ( i = 1; i < n; ++i) + { + x=(str[i]-'a')*pow1(i); + x%=M; + a[i]=a[i-1]+x; + a[i]%=M; + if(a[i]<0) + a[i]+=M; + //printf("a[%d]:%lld str[%d]:%d\n",i,a[i],i,str[i]-'a'); + + x=(str[n-i-1]-'a')*pow1(i); + x%=M; + ar[i]=ar[i-1]+x; + if(ar[i]<0) + ar[i]+=M; + //printf("ar[%d]:%lld str[%d]:%d\n",i,a[i],n-i-1,str[n-i-1]-'a'); + + } + + while(q--) + { + scanf("%d",&k); + for (i = 0; i < k; ++i) + {scanf("%d %d",&ll[i],&rr[i]); + ll[i]--; + rr[i]--; + } + + hash1=0; + ind=0; + for ( i = 0; i < k; ++i) + { +// printf("ll[%d]:%d rr[%d]:%d\n",i,ll[i],i,rr[i]); + + x=a[rr[i]]; + if(ll[i]>0) + x-=a[ll[i]-1]; + x%=M; + if(x<0) + x+=M; + x*=pow1(ind); + x%=M; + if(x<0) + x+=M; + + x*=inv(pow1(ll[i]),M-2); + x%=M; + if(x<0) + x+=M; +// printf("x:%lld\n",x); + + hash1+=x; +// printf("hash1:%lld\n",hash1); + ind+=rr[i]-ll[i]+1; + } + + + hash2=0; + ind=0; + for ( i = k-1; i >=0; --i) + { x=ll[i]; + ll[i]=n-rr[i]-1; + rr[i]=n-x-1; + +// printf("ll[%d]:%d rr[%d]:%d\n",i,ll[i],i,rr[i]); + + x=ar[rr[i]]; + if(ll[i]>0) + x-=ar[ll[i]-1]; + x%=M; + if(x<0) + x+=M; + x*=pow1(ind); + x%=M; + if(x<0) + x+=M; + + x*=inv(pow1(ll[i]),M-2); + x%=M; + if(x<0) + x+=M; + +// printf("x:%lld\n",x); + hash2+=x; +// printf("hash2:%lld\n",hash2); + + ind+=rr[i]-ll[i]+1; + } + + if(hash1==hash2) + printf("YES\n"); + else + printf("NO\n"); + + } + + + return 0; +} diff --git a/DS/p23_gen.c b/DS/p23_gen.c new file mode 100644 index 00000000..b76a059d --- /dev/null +++ b/DS/p23_gen.c @@ -0,0 +1,21 @@ +#include + +int main() +{ + char a[8]="aabssb"; + printf("6 1000000\n%s\n",a); + + int t=0; + while(1) + { + t++; + for (int i = 0; i < t; ++i) + { + printf("3 6\n"); + } + + + } + + return 0; +} \ No newline at end of file diff --git a/DS/p24.c b/DS/p24.c new file mode 100644 index 00000000..2aa8c430 --- /dev/null +++ b/DS/p24.c @@ -0,0 +1,125 @@ +#include +#include + +struct node { + int val; + long int data; + int child; +}; + + +int n,cnt[300009],deg[300009],vis[300009],u[300009],v[300009]; +int *G[300009]; +long int ans,sum; +struct node* tree; + +struct node dfs(int x) +{ + struct node r; + int i; + vis[x]=1; + printf("x:%d\n",x); + + for (i = 0; i < deg[x]; ++i) + if(vis[G[x][i]]==0) + { +// printf("G[%d][%d]:%d vis[%d]:%d\n",x,i,G[x][i],G[x][i],vis[G[x][i]]); + r=dfs(G[x][i]); +// printf("r:: val:%d data:%ld child:%d\n",r.val,r.data,r.child); + ans+=(r.data*r.child)+((sum-r.data)*(n-r.child)); + printf("comp1:%ld \n",(r.data*r.child)); + printf("comp2:%ld \n",((sum-r.data)*(n-r.child))); + + // printf("ans:%ld\n",ans); + tree[x].data+=r.data; + tree[x].child+=r.child; + +// printf("tree[%d]:: val:%d data:%ld child:%d\n",x,tree[x].val,tree[x].data,tree[x].child); + } + + + return tree[x]; +} + + +int main() +{ +int i,j; +sum=0; +ans=0; +scanf("%d",&n); + +tree=(struct node*)malloc(sizeof(struct node)*(n+1)); + +for(i=1;i<=n;i++) +{ + scanf("%d",&tree[i].val); + tree[i].data=tree[i].val; + tree[i].child=1; + deg[i]=0; + cnt[i]=0; + vis[i]=0; + sum+=tree[i].val; +} + + + for(i=0;i + +int n,len; +int vis[1600],heap[1600]; +long int G[1600][1600],x[1600],y[1600]; +long int dis[1600],sum; + +void swap(int *a,int *b) +{ + *a= *b + *a -(*b=*a); + return; +} + +long int min(long int a,long int b) +{ + return ax2) + sum+=x1-x2; + else + sum+=x2-x1; + + if(y1>y2) + sum+=y1-y2; + else + sum+=y2-y1; + + + return sum; + +} + +void insert(int i) +{ + while(i>0&&dis[heap[i]]>1)-1]]) + { + swap(&heap[((i+1)>>1)-1],&heap[i]); + i=((i+1)>>1)-1; + } + +} + +void delete() +{ +swap(&heap[0],&heap[len-1]); +len--; + + update(0); + +return ; +} + +void update(int i) +{ +int r=i; +while(i>0&&dis[heap[i]]>1)-1]]) + { + // printf("case 0 i:%d\n",i); + swap(&heap[((i+1)>>1)-1],&heap[i]); + i=((i+1)>>1)-1; + } + +i=r; + +int ll=1,rr=2; +while(1) +{ + ll=2*i+1; + rr=2*i+2; + if(rr>=len) + break; + + // printf("i:%d ll:%d rr:%d\n",i,ll,rr ); + + if(rr==len&&lldis[heap[ll]]) + { + // printf("part1\n"); + swap(&heap[i],&heap[ll]);break;} + else if(rr0) + { + sum+=dis[heap[0]]; + xx=heap[0]; + // printf("removed::x[%d]:%ld y[%d]:%ld\n",xx,x[xx],xx,y[xx]); + // printf("heap[%d]:%d dis[%d]:%ld\n",0,heap[0],heap[0],dis[heap[0]]); + // printf("\n"); + vis[heap[0]]=1; + delete(); + for(i=0;i +#include + +int len,n,m,indeg[3009],outdeg[3009],u[3009],v[3009],cnt[3009],heap[3009],vis[3009]; +int* G[3009]; + +void swap(int *a,int *b) +{ + *a= *b + *a -(*b=*a); + return; +} + +void insert() +{ +int i=len-1; + + + while(i>1&&heap[i]>heap[i>>1]) + { + swap(&heap[i>>1],&heap[i]); + i=i>>1; + } + +} + +void delete() +{ +swap(&heap[1],&heap[len-1]); +len--; + +int i=1; +int ll=2,rr=3; +while(1) +{ + ll=2*i; + rr=2*i+1; + if(rr>len) + break; + + // printf("i:%d ll:%d rr:%d\n",i,ll,rr ); + + if(rr==len&&ll=heap[rr]&&heap[ll]>=heap[i]) + { + // printf("part2\n"); + swap(&heap[i],&heap[ll]);i=ll;} + + else if(rr=heap[ll]&&heap[rr]>=heap[i]) + { + // printf("part3\n"); + swap(&heap[i],&heap[rr]);i=rr;} + + else + break; + +} + +return ; +} + +int main() +{ + int i,j,t,x; + int p_arr[3009]; + int p_len; + scanf("%d",&t); + + while(t--) + { + scanf("%d %d",&n,&m); + + for(i=1;i<3009;i++) + { + indeg[i]=0; + cnt[i]=0; + vis[i]=0; + outdeg[i]=0; + } + + for(i=0;i1) + { + x=heap[1]; + p_arr[p_len++]=x; + delete(); + + + // for(i=1;i=0;--i) + printf("%d ",p_arr[i]); + + printf("\n"); + } + + return 0; +} \ No newline at end of file diff --git a/DS/p27.c b/DS/p27.c new file mode 100644 index 00000000..a889bfa8 --- /dev/null +++ b/DS/p27.c @@ -0,0 +1,99 @@ +#include +#include + +int n,m,cnt[110000],deg[110000],u[110000],v[110000]; +int *G[110000]; +long int *W[110000]; +long int w[11000]; + +int max_node(long int time,int node) +{ + // printf("node:%d\n",node); + + if(time<0) + return 0; + + if(node==n) + return 1; + + int i,max=0,val; + for (i = 0; i %d val:%d\n",node,G[node][i],val); + + if(max +#define MAX 2000000009 +int n,m,E[100009][2]; +long int time,T[100009],dp[1009][1009]; + + +int main() +{ + int i,j,ans=0; + scanf("%d %d %ld",&n,&m,&time); + + for ( i = 0; i < m; ++i) + scanf("%d %d %ld",&E[i][0],&E[i][1],&T[i]); + + for(i=1;i<=n;i++) + for (j = 1; j <=n ; ++j) + dp[i][j]=MAX; + + dp[1][1]=0; + + for(i=2;i<=n;i++) + { + ans=dp[i-1][n]<=time?i-1:ans; + // printf("ans:%d dp[%d][%d]:%ld\n",ans,i,n,dp[i][n]); + + for (j = 0;j=dp[i-1][E[j][0]]+T[j]) + {dp[i][E[j][1]]=dp[i-1][E[j][0]]+T[j];} + + for (int r = 1; r <=n ; r++) + { + for(int q=1;q<=n;q++) + printf("%9ld ",dp[r][q]); + printf("\n"); + } + printf("\n"); + + // for (int r = 1; r <=n ; r++) + // { + // for(int q=1;q<=n;q++) + // printf("%4d ",P[r][q]); + // printf("\n"); + // } + // printf("\n"); + + + } + + printf("%d\n",ans); + // int st[5009],len=0; + // int id=n; + // for (i=ans; i>=1; --i) + // { + // st[i]=id; + // id=P[i-1][id]; + // } + + // for (i = 2; i <=ans; ++i) + // { + // printf("%d ",st[i] ); + // } + // printf("\n"); + + return 0; +} \ No newline at end of file diff --git a/DS/p28.c b/DS/p28.c new file mode 100644 index 00000000..f814504c --- /dev/null +++ b/DS/p28.c @@ -0,0 +1,105 @@ +#include +#include + +int len,n,m; +int unf[100009],rank[100009]; +int flag; +long int ans; + + +struct edge{ + int s; + int d; + long int w; +}; + +int cmp(const void *a,const void *b) +{ + +return (*(struct edge*)a).w - (*(struct edge*)b).w; + +} + +int max(int a,int b) +{ + return a>b?a:b; +} + + +int find(int u) +{ + if (unf[u] ==u) return u; + + return unf[u]=find(unf[u]); +} + + +int update(int u,int v) +{ +int x=find(u); +int y=find(v); + +if(flag==0&&x==y) +return flag=1; + +else if(flag==1&&x==y) + return 0; + +else +{ + if(rank[x] +using namespace std; + +int n,m; +vector G[100009]; +vector sat; +vector vis; +long long int sum1,sum2; + +void bfs(int u) +{ + int x; + + queue q; + vis[u]=1; + q.push(u); + while(!q.empty()) + { + x=q.front(); + // printf("x:%d\n",x); + q.pop(); + if(vis[x]==1) + sum1+=sat[x]; + else + sum2+=sat[x]; + + // printf("sum1:%lld sum2:%lld\n",sum1,sum2); + + for(int i=0;isum2?sum1:sum2); + + + return 0; +} \ No newline at end of file diff --git a/DS/p29b.cc b/DS/p29b.cc new file mode 100644 index 00000000..99e724b3 --- /dev/null +++ b/DS/p29b.cc @@ -0,0 +1,53 @@ +#include +using namespace std; + + +int n; +vector G[100009]; +long long int sat[100009],incl[100009],excl[100009]; + + +void dfs(int u,int par) + { + + int x; + long long int sum1=0,sum2=0; + + for(int i=0;i +#include +#include + +char b[100010]; + +void merge(int low,int mid,int high) +{ +int i; +int x[mid-low+1],y[high-mid]; +for(i=low;i<=mid;i++) +x[i-low]=b[i]; + + +for(i=mid+1;i<=high;i++) +y[i-mid-1]=b[i]; + +int j=0,k=low; +i=0; +while(i=mid-low+1&&j=high-mid) +{ +b[k]=x[i]; +k++; +i++; +} + +} + +int msort(int low,int high) +{ +if(low=n) +{ +printf("%s\n",a); +return 0; +} + +for(i=0;i=0;j+=k) +{ + +a[j]=b[len]; +len--; +} + + +} + +printf("%s\n",a); + +return 0; +} diff --git a/DS/p3.cc b/DS/p3.cc new file mode 100644 index 00000000..e69de29b diff --git a/DS/p30.cc b/DS/p30.cc new file mode 100644 index 00000000..09652716 --- /dev/null +++ b/DS/p30.cc @@ -0,0 +1,144 @@ +#include +using namespace std; + +vector G[100009],Gt[100009]; +int n,m,tim; +int vis[100009]; +pair fin[100009]; +unsigned long long int mod,ans,sum; + + +bool cmp(pair a,pair b) +{ + return b.second < a.second; +} + +unsigned long long int big_mod(unsigned long long int a,unsigned long long int b) +{ + // printf("a:%llu b:%llu\n",a,b); + if(b==1) + return a; + + unsigned long long int res=0,x; + + x=big_mod(a,b/2); + res+=2*x; + + if(b%2==1) + res+=a; + + res%=mod; + + // printf("res:%llu\n",res); + return res%mod; +} + + +unsigned long long int dfs2(int u) +{ + vis[u]=1; + unsigned long long int sum=1,x; + + // printf("u:%d\n",u); + for (int i = 0; i +using namespace std; + +int n,m,q; +vector< pair,int> >Q,E; +long long int ans[100009],dsu[100009]; + +bool cmp( pair,int> a,pair,int> b) +{ + return a.first.second < b.first.second; +} + + +int find1(int u) +{ + if (dsu[u] <=0) return u; + + return dsu[u]=find1(dsu[u]); +} + + +long long int find2(int u) +{ + if (dsu[u] <=0) return dsu[u]; + + return find2(dsu[u]); +} + +int update(pair,int> e) +{ +int x=find1(e.first.first); +int y=find1(e.second); + + // printf("x:%d y:%d\n",x,y); + + if(x==y) + { + if(y<=0) swap(x,y); + dsu[x]-=e.first.second; + } + + else + { + if(x > y) swap(x,y); + dsu[x]+=dsu[y]-e.first.second; + dsu[y]=x; + } + + +} + +int main() +{ + int k,t,u,v; + long long int w; + scanf("%d",&t); + while(t--) + { + scanf("%d %d %d",&n,&m,&q); + + for (int j = 1; j <=n; ++j) + dsu[j]=0; + + Q.resize(0); + E.resize(0); + + // for (int j = 1; j <=n; ++j) + // printf("dsu[%d]:%lld\n",j,dsu[j]); + + for (int i = 0; i +#define INF 1e9 + 9 +using namespace std; + +long long int mod=1e9 + 7; +int n,m,src,dest; + +vector G[100009]; +vector W[100009]; +vector,long long int> > E; +long long int cntsrc[100009],cntdest[100009]; +long long int dijsrc[100009],dijdest[100009]; +int vis[100009]; +set > que; + + +void dij(int src,long long int dis[],long long int cnt[]) +{ + que.clear(); + + for (int i = 1; i <=n; ++i) + { + vis[i]=0; + } + + vis[src]=1; + + int u,d,v,len; + pair node; + + dis[src]=0; + cnt[src]=1; + que.insert(make_pair(src,0)); + + while(!que.empty()) + { + node=*(que.begin()); + u=node.first; + d=node.second; + que.erase(que.begin()); + + if(d > dis[u]) + continue; + + len=G[u].size(); + for (int i = 0; i mod) + cnt[v]-=mod; + + que.insert(make_pair(v,dis[v])); + + } + + else if(dis[u]+W[u][i] == dis[v]) + { + cnt[v]+=cnt[u]; + if(cnt[v]>mod) + cnt[v]-=mod; + } + } + } + } +} + + +int main() +{ + +int t,u,v; +long long int w; +scanf("%d",&t); +while(t--) + { + scanf("%d %d %d %d",&n,&m,&src,&dest); + + E.resize(0); + for (int i = 1; i <=n; ++i) + { + cntsrc[i]=0; + cntdest[i]=0; + dijsrc[i]=INF; + dijdest[i]=INF; + G[i].resize(0); + W[i].resize(0); + } + + for (int i = 0; i +using namespace std; + +int dp[509][509]; +long long int ans; + +int main() +{ + int u,v,w,n,m; + scanf("%d %d",&n,&m); + + for (int i = 1; i <=n; ++i) + for (int j = 1; j <=n; ++j) + dp[i][i]=0; + + for (int i = 0; i < m; ++i) + { + scanf("%d %d %d",&u,&v,&w); + dp[u][v]=max(dp[u][v],w); + dp[v][u]=max(dp[v][u],w); + } + + + for (int i = 1; i <=n; ++i) + {for (int j = 1; j<=n; ++j) + if(dp[i][j]==0) + dp[i][j]=100000000; + dp[i][i]=0; + } + + + for (int i = 1; i <=n; ++i) + for(int j=1;j<=n;j++) + for (int k=1; k <=n; ++k) + dp[j][k]=min(dp[j][k],dp[j][i]+dp[i][k]); + + + ans=0; + + for (int i =1; i<=n; ++i) + for(int j=1;j<=n;j++) + ans+=dp[j][i]; + + printf("%lld\n",ans); + + return 0; +} \ No newline at end of file diff --git a/DS/p4.c b/DS/p4.c new file mode 100644 index 00000000..bfdeac84 --- /dev/null +++ b/DS/p4.c @@ -0,0 +1,45 @@ +#include + + +int main() +{ +int k,n,i,j,count; +long int s[1001],min; +int ind[1001]; + +scanf("%d",&n); + +for(i=0;i +#include + +int i,j,n,len; +long long int area,ymax; + + +struct rec{ +int ind,c; +long int x,h; +}; + +int cmp(const void *a,const void *b) +{ +struct rec *aa=(struct rec*)a; +struct rec *bb=(struct rec*)b; + +return aa->x - bb->x; +} + +void swap(struct rec* a,struct rec* b) +{ + +struct rec* c=(struct rec*)malloc(sizeof(struct rec)); + +*c=*a; +*a=*b; +*b=*c; +} + +void hinsert(struct rec heap[],struct rec root,int len) +{ +int o=len; +heap[o]=root; + +while(o>1 &&heap[o>>1].h>1],&heap[o]); + +o=o>>1; +//printf("o:%d\n",o); +} + +} + +void hrem(struct rec heap[],struct rec root) +{ +int o,l,r; +for(o=1;o>1; +r=l+1; + +if(r>=len&&heap[l].h>heap[o].h) +{swap(&heap[l],&heap[o]);break;} + +if(heap[l].h>heap[o].h&&heap[l].h>=heap[r].h) +{swap(&heap[l],&heap[o]);} + +if(heap[l].h>heap[o].h&&heap[l].h>=heap[r].h) +{swap(&heap[l],&heap[o]);} + +o=o<<1; +} + +} + + +int main() +{ +scanf("%d",&n); + +struct rec* r=(struct rec*)malloc(sizeof(struct rec)*2*n); + +for(i=0;i1) +ymax=heap[1].h; +else +ymax=0; + +//for(j=1;j +#include + +long int dp[2009][2009],ci[2009],di[2009]; +int n,len; + +struct heap +{ +long int c; +int ind; +}; + +void swap(struct heap* a,struct heap* b) +{ + struct heap* c=(struct heap*)malloc(sizeof(struct heap)); + + *c=*a; + *a=*b; + *b=*c; +} + +void hin(struct heap h[],long int o) +{ + + while(o>1&&h[o>>1].c>=h[o].c) + { +// printf("o:%ld\n",o); + swap(&h[o>>1],&h[o]); + o=o>>1; + } + +} + +void hrem(struct heap h[]) +{ + +//printf("hrem\n"); + +//printf("len:%lld \n",len); + +//printf("h[%ld].c:%ld h[%ld].c:%d\n",1,h[1].c,len-1,h[len-1].c); +swap(&h[1],&h[len-1]); +//printf("h[%ld].c:%ld h[%ld].c:%d\n",1,h[1].c,len-1,h[len-1].c); + +long int o=1,ll=2,rr=3; +len--; + +//printf("len:%lld o:%lld ll:%lld rr:%lld \n",len,o,ll,rr); + +while(2*o=0;i--) +{ +len=1; +for(j=n;j>i;j--) +{ +printf("i:%d j:%d len:%d\n ",i,j,len); + +if(jdi[i]+j&&len>1) +{ +printf("h[1].ind:%d di[%d]+%d=%d\n",h[1].ind,i,j,di[i]+j); +hrem(h); +} + +for(int k=1;k +long int j,r,i,t,n,st[1000009],len,max; + +long int func(long int a,long int b) +{ +//printf("a:%ld b:%ld a|b:%ld a&b:%ld\n",a,b,a|b,a&b); +return ((a|b)*(a|b) - (a&b)*(a&b)); +} + +int main() +{ +scanf("%ld",&t); +while(t--) +{ +len=0; +max=0; +scanf("%ld",&n); + +for(i=0;i0&&st[len-1]>=r) +{ +if(max0) +if(max +int main() +{ +int t,q,c,len,i; +long int x,sum,st[100009],min[100009],m; + +scanf("%d",&t); +while(t--) +{ +//printf("t:%d\n",t); +scanf("%d",&q); +sum=0; +len=0; +m=0; +while(q--) +{ +scanf("%d",&c); + +if(c==1) +{ +scanf("%ld",&x); + +if(m==0) +min[m++]=x; + +else if(min[m-1]>x) +{ +min[m]=x; +m++; +} + + +st[len]=x; +sum+=st[len]; +len++; +printf("%ld %ld\n",min[m-1],sum); +} + + +if(c==2) +{ +if(len>0) +sum-=st[len-1]; + +if(m==0||(m==1&&sum==0)) +{ +printf("-1 %ld\n",sum); +len=0; +m=0; +continue; +} + +if(min[m-1]==st[len-1]) +m--; + +len--; + +printf("%ld %ld\n",min[m-1],sum); +} + +/* +for(int i=0;i + +long int min(long int a,long b,long int c) +{ +if(a<=b&&a<=c) +return a; + +if(b<=a&&b<=c) +return b; + +if(c<=b&&c<=a) +return c; +} + +int main() +{ +int i,n,a,b,c; +long int x[1009]; +scanf("%d",&n); + +x[0]=1; +a=0; +b=0; +c=0; + +for(i=1;i cpython +// view Objects/dictobject.c @ 74633:52f68c95e025 + +// - Issue #13840: Fix ctypes.create_string_buffer exception message and docs. [#13840] +// author Meador Inge +// date Thu, 26 Jan 2012 08:47:27 -0600 (2012-01-26) +// parents 7d96679c5d46 +// children 3dfa98cf2e26 +// line wrap: off +// line source + + +/* Dictionary object implementation using a hash table */ + + +/* The distribution includes a separate file, Objects/dictnotes.txt, + + describing explorations into dictionary design and optimization. + + It covers typical dictionary use patterns, the parameters for + + tuning dictionaries, and several ideas for possible optimizations. + +*/ + + +#include "Python.h" + +#include "stringlib/eq.h" + + + +/* Set a key error with the specified argument, wrapping it in a + + * tuple automatically so that tuple keys are not unpacked as the + + * exception arguments. */ + +static void + +set_key_error(PyObject *arg) + +{ + + PyObject *tup; + + tup = PyTuple_Pack(1, arg); + + if (!tup) + + return; /* caller will expect error to be set anyway */ + + PyErr_SetObject(PyExc_KeyError, tup); + + Py_DECREF(tup); + +} + + +/* Define this out if you don't want conversion statistics on exit. */ + +#undef SHOW_CONVERSION_COUNTS + + +/* See large comment block below. This must be >= 1. */ + +#define PERTURB_SHIFT 5 + + +/* + +Major subtleties ahead: Most hash schemes depend on having a "good" hash + +function, in the sense of simulating randomness. Python doesn't: its most + +important hash functions (for strings and ints) are very regular in common + +cases: + + + >>> map(hash, (0, 1, 2, 3)) + + [0, 1, 2, 3] + + >>> map(hash, ("namea", "nameb", "namec", "named")) + + [-1658398457, -1658398460, -1658398459, -1658398462] + + >>> + + +This isn't necessarily bad! To the contrary, in a table of size 2**i, taking + +the low-order i bits as the initial table index is extremely fast, and there + +are no collisions at all for dicts indexed by a contiguous range of ints. + +The same is approximately true when keys are "consecutive" strings. So this + +gives better-than-random behavior in common cases, and that's very desirable. + + +OTOH, when collisions occur, the tendency to fill contiguous slices of the + +hash table makes a good collision resolution strategy crucial. Taking only + +the last i bits of the hash code is also vulnerable: for example, consider + +the list [i << 16 for i in range(20000)] as a set of keys. Since ints are + +their own hash codes, and this fits in a dict of size 2**15, the last 15 bits + + of every hash code are all 0: they *all* map to the same table index. + + +But catering to unusual cases should not slow the usual ones, so we just take + +the last i bits anyway. It's up to collision resolution to do the rest. If + +we *usually* find the key we're looking for on the first try (and, it turns + +out, we usually do -- the table load factor is kept under 2/3, so the odds + +are solidly in our favor), then it makes best sense to keep the initial index + +computation dirt cheap. + + +The first half of collision resolution is to visit table indices via this + +recurrence: + + + j = ((5*j) + 1) mod 2**i + + +For any initial j in range(2**i), repeating that 2**i times generates each + +int in range(2**i) exactly once (see any text on random-number generation for + +proof). By itself, this doesn't help much: like linear probing (setting + +j += 1, or j -= 1, on each loop trip), it scans the table entries in a fixed + +order. This would be bad, except that's not the only thing we do, and it's + +actually *good* in the common cases where hash keys are consecutive. In an + +example that's really too small to make this entirely clear, for a table of + +size 2**3 the order of indices is: + + + 0 -> 1 -> 6 -> 7 -> 4 -> 5 -> 2 -> 3 -> 0 [and here it's repeating] + + +If two things come in at index 5, the first place we look after is index 2, + +not 6, so if another comes in at index 6 the collision at 5 didn't hurt it. + +Linear probing is deadly in this case because there the fixed probe order + +is the *same* as the order consecutive keys are likely to arrive. But it's + +extremely unlikely hash codes will follow a 5*j+1 recurrence by accident, + +and certain that consecutive hash codes do not. + + +The other half of the strategy is to get the other bits of the hash code + +into play. This is done by initializing a (unsigned) vrbl "perturb" to the + +full hash code, and changing the recurrence to: + + + j = (5*j) + 1 + perturb; + + perturb >>= PERTURB_SHIFT; + + use j % 2**i as the next table index; + + +Now the probe sequence depends (eventually) on every bit in the hash code, + +and the pseudo-scrambling property of recurring on 5*j+1 is more valuable, + +because it quickly magnifies small differences in the bits that didn't affect + +the initial index. Note that because perturb is unsigned, if the recurrence + +is executed often enough perturb eventually becomes and remains 0. At that + +point (very rarely reached) the recurrence is on (just) 5*j+1 again, and + +that's certain to find an empty slot eventually (since it generates every int + +in range(2**i), and we make sure there's always at least one empty slot). + + +Selecting a good value for PERTURB_SHIFT is a balancing act. You want it + +small so that the high bits of the hash code continue to affect the probe + +sequence across iterations; but you want it large so that in really bad cases + +the high-order hash bits have an effect on early iterations. 5 was "the + +best" in minimizing total collisions across experiments Tim Peters ran (on + +both normal and pathological cases), but 4 and 6 weren't significantly worse. + + +Historical: Reimer Behrends contributed the idea of using a polynomial-based + +approach, using repeated multiplication by x in GF(2**n) where an irreducible + +polynomial for each table size was chosen such that x was a primitive root. + +Christian Tismer later extended that to use division by x instead, as an + +efficient way to get the high bits of the hash code into play. This scheme + +also gave excellent collision statistics, but was more expensive: two + +if-tests were required inside the loop; computing "the next" index took about + +the same number of operations but without as much potential parallelism + +(e.g., computing 5*j can go on at the same time as computing 1+perturb in the + +above, and then shifting perturb can be done while the table index is being + +masked); and the PyDictObject struct required a member to hold the table's + +polynomial. In Tim's experiments the current scheme ran faster, produced + +equally good collision statistics, needed less code & used less memory. + + +*/ + + +/* Object used as dummy key to fill deleted entries */ + +static PyObject *dummy = NULL; /* Initialized by first call to newPyDictObject() */ + + +#ifdef Py_REF_DEBUG + +PyObject * + +_PyDict_Dummy(void) + +{ + + return dummy; + +} + +#endif + + +/* forward declarations */ + +static PyDictEntry * + +lookdict_unicode(PyDictObject *mp, PyObject *key, Py_hash_t hash); + + +#ifdef SHOW_CONVERSION_COUNTS + +static long created = 0L; + +static long converted = 0L; + + +static void + +show_counts(void) + +{ + + fprintf(stderr, "created %ld string dicts\n", created); + + fprintf(stderr, "converted %ld to normal dicts\n", converted); + + fprintf(stderr, "%.2f%% conversion rate\n", (100.0*converted)/created); + +} + +#endif + + +/* Debug statistic to compare allocations with reuse through the free list */ + +#undef SHOW_ALLOC_COUNT + +#ifdef SHOW_ALLOC_COUNT + +static size_t count_alloc = 0; + +static size_t count_reuse = 0; + + +static void + +show_alloc(void) + +{ + + fprintf(stderr, "Dict allocations: %" PY_FORMAT_SIZE_T "d\n", + + count_alloc); + + fprintf(stderr, "Dict reuse through freelist: %" PY_FORMAT_SIZE_T + + "d\n", count_reuse); + + fprintf(stderr, "%.2f%% reuse rate\n\n", + + (100.0*count_reuse/(count_alloc+count_reuse))); + +} + +#endif + + +/* Debug statistic to count GC tracking of dicts */ + +#ifdef SHOW_TRACK_COUNT + +static Py_ssize_t count_untracked = 0; + +static Py_ssize_t count_tracked = 0; + + +static void + +show_track(void) + +{ + + fprintf(stderr, "Dicts created: %" PY_FORMAT_SIZE_T "d\n", + + count_tracked + count_untracked); + + fprintf(stderr, "Dicts tracked by the GC: %" PY_FORMAT_SIZE_T + + "d\n", count_tracked); + + fprintf(stderr, "%.2f%% dict tracking rate\n\n", + + (100.0*count_tracked/(count_untracked+count_tracked))); + +} + +#endif + + + +/* Initialization macros. + + There are two ways to create a dict: PyDict_New() is the main C API + + function, and the tp_new slot maps to dict_new(). In the latter case we + + can save a little time over what PyDict_New does because it's guaranteed + + that the PyDictObject struct is already zeroed out. + + Everyone except dict_new() should use EMPTY_TO_MINSIZE (unless they have + + an excellent reason not to). + +*/ + + +#define INIT_NONZERO_DICT_SLOTS(mp) do { \ + + (mp)->ma_table = (mp)->ma_smalltable; \ + + (mp)->ma_mask = PyDict_MINSIZE - 1; \ + + } while(0) + + +#define EMPTY_TO_MINSIZE(mp) do { \ + + memset((mp)->ma_smalltable, 0, sizeof((mp)->ma_smalltable)); \ + + (mp)->ma_used = (mp)->ma_fill = 0; \ + + INIT_NONZERO_DICT_SLOTS(mp); \ + + } while(0) + + +/* Dictionary reuse scheme to save calls to malloc, free, and memset */ + +#ifndef PyDict_MAXFREELIST + +#define PyDict_MAXFREELIST 80 + +#endif + +static PyDictObject *free_list[PyDict_MAXFREELIST]; + +static int numfree = 0; + + +int + +PyDict_ClearFreeList(void) + +{ + + PyDictObject *op; + + int ret = numfree; + + while (numfree) { + + op = free_list[--numfree]; + + assert(PyDict_CheckExact(op)); + + PyObject_GC_Del(op); + + } + + return ret; + +} + + +void + +PyDict_Fini(void) + +{ + + PyDict_ClearFreeList(); + +} + + +PyObject * + +PyDict_New(void) + +{ + + register PyDictObject *mp; + + if (dummy == NULL) { /* Auto-initialize dummy */ + + dummy = PyUnicode_FromString(""); + + if (dummy == NULL) + + return NULL; + +#ifdef SHOW_CONVERSION_COUNTS + + Py_AtExit(show_counts); + +#endif + +#ifdef SHOW_ALLOC_COUNT + + Py_AtExit(show_alloc); + +#endif + +#ifdef SHOW_TRACK_COUNT + + Py_AtExit(show_track); + +#endif + + } + + if (numfree) { + + mp = free_list[--numfree]; + + assert (mp != NULL); + + assert (Py_TYPE(mp) == &PyDict_Type); + + _Py_NewReference((PyObject *)mp); + + if (mp->ma_fill) { + + EMPTY_TO_MINSIZE(mp); + + } else { + + /* At least set ma_table and ma_mask; these are wrong + + if an empty but presized dict is added to freelist */ + + INIT_NONZERO_DICT_SLOTS(mp); + + } + + assert (mp->ma_used == 0); + + assert (mp->ma_table == mp->ma_smalltable); + + assert (mp->ma_mask == PyDict_MINSIZE - 1); + +#ifdef SHOW_ALLOC_COUNT + + count_reuse++; + +#endif + + } else { + + mp = PyObject_GC_New(PyDictObject, &PyDict_Type); + + if (mp == NULL) + + return NULL; + + EMPTY_TO_MINSIZE(mp); + +#ifdef SHOW_ALLOC_COUNT + + count_alloc++; + +#endif + + } + + mp->ma_lookup = lookdict_unicode; + +#ifdef SHOW_TRACK_COUNT + + count_untracked++; + +#endif + +#ifdef SHOW_CONVERSION_COUNTS + + ++created; + +#endif + + return (PyObject *)mp; + +} + + +/* + +The basic lookup function used by all operations. + +This is based on Algorithm D from Knuth Vol. 3, Sec. 6.4. + +Open addressing is preferred over chaining since the link overhead for + +chaining would be substantial (100% with typical malloc overhead). + + +The initial probe index is computed as hash mod the table size. Subsequent + +probe indices are computed as explained earlier. + + +All arithmetic on hash should ignore overflow. + + +The details in this version are due to Tim Peters, building on many past + +contributions by Reimer Behrends, Jyrki Alakuijala, Vladimir Marangozov and + +Christian Tismer. + + +lookdict() is general-purpose, and may return NULL if (and only if) a + +comparison raises an exception (this was new in Python 2.5). + +lookdict_unicode() below is specialized to string keys, comparison of which can + +never raise an exception; that function can never return NULL. For both, when + +the key isn't found a PyDictEntry* is returned for which the me_value field is + +NULL; this is the slot in the dict at which the key would have been found, and + +the caller can (if it wishes) add the pair to the returned + +PyDictEntry*. + +*/ + +static PyDictEntry * + +lookdict(PyDictObject *mp, PyObject *key, register Py_hash_t hash) + +{ + + register size_t i; + + register size_t perturb; + + register PyDictEntry *freeslot; + + register size_t mask = (size_t)mp->ma_mask; + + PyDictEntry *ep0 = mp->ma_table; + + register PyDictEntry *ep; + + register int cmp; + + PyObject *startkey; + + + i = (size_t)hash & mask; + + ep = &ep0[i]; + + if (ep->me_key == NULL || ep->me_key == key) + + return ep; + + + if (ep->me_key == dummy) + + freeslot = ep; + + else { + + if (ep->me_hash == hash) { + + startkey = ep->me_key; + + Py_INCREF(startkey); + + cmp = PyObject_RichCompareBool(startkey, key, Py_EQ); + + Py_DECREF(startkey); + + if (cmp < 0) + + return NULL; + + if (ep0 == mp->ma_table && ep->me_key == startkey) { + + if (cmp > 0) + + return ep; + + } + + else { + + /* The compare did major nasty stuff to the + + * dict: start over. + + * XXX A clever adversary could prevent this + + * XXX from terminating. + + */ + + return lookdict(mp, key, hash); + + } + + } + + freeslot = NULL; + + } + + + /* In the loop, me_key == dummy is by far (factor of 100s) the + + least likely outcome, so test for that last. */ + + for (perturb = hash; ; perturb >>= PERTURB_SHIFT) { + + i = (i << 2) + i + perturb + 1; + + ep = &ep0[i & mask]; + + if (ep->me_key == NULL) + + return freeslot == NULL ? ep : freeslot; + + if (ep->me_key == key) + + return ep; + + if (ep->me_hash == hash && ep->me_key != dummy) { + + startkey = ep->me_key; + + Py_INCREF(startkey); + + cmp = PyObject_RichCompareBool(startkey, key, Py_EQ); + + Py_DECREF(startkey); + + if (cmp < 0) + + return NULL; + + if (ep0 == mp->ma_table && ep->me_key == startkey) { + + if (cmp > 0) + + return ep; + + } + + else { + + /* The compare did major nasty stuff to the + + * dict: start over. + + * XXX A clever adversary could prevent this + + * XXX from terminating. + + */ + + return lookdict(mp, key, hash); + + } + + } + + else if (ep->me_key == dummy && freeslot == NULL) + + freeslot = ep; + + } + + assert(0); /* NOT REACHED */ + + return 0; + +} + + +/* + + * Hacked up version of lookdict which can assume keys are always + + * unicodes; this assumption allows testing for errors during + + * PyObject_RichCompareBool() to be dropped; unicode-unicode + + * comparisons never raise exceptions. This also means we don't need + + * to go through PyObject_RichCompareBool(); we can always use + + * unicode_eq() directly. + + * + + * This is valuable because dicts with only unicode keys are very common. + + */ + +static PyDictEntry * + +lookdict_unicode(PyDictObject *mp, PyObject *key, register Py_hash_t hash) + +{ + + register size_t i; + + register size_t perturb; + + register PyDictEntry *freeslot; + + register size_t mask = (size_t)mp->ma_mask; + + PyDictEntry *ep0 = mp->ma_table; + + register PyDictEntry *ep; + + + /* Make sure this function doesn't have to handle non-unicode keys, + + including subclasses of str; e.g., one reason to subclass + + unicodes is to override __eq__, and for speed we don't cater to + + that here. */ + + if (!PyUnicode_CheckExact(key)) { + +#ifdef SHOW_CONVERSION_COUNTS + + ++converted; + +#endif + + mp->ma_lookup = lookdict; + + return lookdict(mp, key, hash); + + } + + i = (size_t)hash & mask; + + ep = &ep0[i]; + + if (ep->me_key == NULL || ep->me_key == key) + + return ep; + + if (ep->me_key == dummy) + + freeslot = ep; + + else { + + if (ep->me_hash == hash && unicode_eq(ep->me_key, key)) + + return ep; + + freeslot = NULL; + + } + + + /* In the loop, me_key == dummy is by far (factor of 100s) the + + least likely outcome, so test for that last. */ + + for (perturb = hash; ; perturb >>= PERTURB_SHIFT) { + + i = (i << 2) + i + perturb + 1; + + ep = &ep0[i & mask]; + + if (ep->me_key == NULL) + + return freeslot == NULL ? ep : freeslot; + + if (ep->me_key == key + + || (ep->me_hash == hash + + && ep->me_key != dummy + + && unicode_eq(ep->me_key, key))) + + return ep; + + if (ep->me_key == dummy && freeslot == NULL) + + freeslot = ep; + + } + + assert(0); /* NOT REACHED */ + + return 0; + +} + + +int + +_PyDict_HasOnlyStringKeys(PyObject *dict) + +{ + + Py_ssize_t pos = 0; + + PyObject *key, *value; + + assert(PyDict_Check(dict)); + + /* Shortcut */ + + if (((PyDictObject *)dict)->ma_lookup == lookdict_unicode) + + return 1; + + while (PyDict_Next(dict, &pos, &key, &value)) + + if (!PyUnicode_Check(key)) + + return 0; + + return 1; + +} + + +#ifdef SHOW_TRACK_COUNT + +#define INCREASE_TRACK_COUNT \ + + (count_tracked++, count_untracked--); + +#define DECREASE_TRACK_COUNT \ + + (count_tracked--, count_untracked++); + +#else + +#define INCREASE_TRACK_COUNT + +#define DECREASE_TRACK_COUNT + +#endif + + +#define MAINTAIN_TRACKING(mp, key, value) \ + + do { \ + + if (!_PyObject_GC_IS_TRACKED(mp)) { \ + + if (_PyObject_GC_MAY_BE_TRACKED(key) || \ + + _PyObject_GC_MAY_BE_TRACKED(value)) { \ + + _PyObject_GC_TRACK(mp); \ + + INCREASE_TRACK_COUNT \ + + } \ + + } \ + + } while(0) + + +void + +_PyDict_MaybeUntrack(PyObject *op) + +{ + + PyDictObject *mp; + + PyObject *value; + + Py_ssize_t mask, i; + + PyDictEntry *ep; + + + if (!PyDict_CheckExact(op) || !_PyObject_GC_IS_TRACKED(op)) + + return; + + + mp = (PyDictObject *) op; + + ep = mp->ma_table; + + mask = mp->ma_mask; + + for (i = 0; i <= mask; i++) { + + if ((value = ep[i].me_value) == NULL) + + continue; + + if (_PyObject_GC_MAY_BE_TRACKED(value) || + + _PyObject_GC_MAY_BE_TRACKED(ep[i].me_key)) + + return; + + } + + DECREASE_TRACK_COUNT + + _PyObject_GC_UNTRACK(op); + +} + + + +/* + +Internal routine to insert a new item into the table. + +Used both by the internal resize routine and by the public insert routine. + +Eats a reference to key and one to value. + +Returns -1 if an error occurred, or 0 on success. + +*/ + +static int + +insertdict(register PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject *value) + +{ + + PyObject *old_value; + + register PyDictEntry *ep; + + typedef PyDictEntry *(*lookupfunc)(PyDictObject *, PyObject *, Py_hash_t); + + + assert(mp->ma_lookup != NULL); + + ep = mp->ma_lookup(mp, key, hash); + + if (ep == NULL) { + + Py_DECREF(key); + + Py_DECREF(value); + + return -1; + + } + + MAINTAIN_TRACKING(mp, key, value); + + if (ep->me_value != NULL) { + + old_value = ep->me_value; + + ep->me_value = value; + + Py_DECREF(old_value); /* which **CAN** re-enter */ + + Py_DECREF(key); + + } + + else { + + if (ep->me_key == NULL) + + mp->ma_fill++; + + else { + + assert(ep->me_key == dummy); + + Py_DECREF(dummy); + + } + + ep->me_key = key; + + ep->me_hash = hash; + + ep->me_value = value; + + mp->ma_used++; + + } + + return 0; + +} + + +/* + +Internal routine used by dictresize() to insert an item which is + +known to be absent from the dict. This routine also assumes that + +the dict contains no deleted entries. Besides the performance benefit, + +using insertdict() in dictresize() is dangerous (SF bug #1456209). + +Note that no refcounts are changed by this routine; if needed, the caller + +is responsible for incref'ing `key` and `value`. + +*/ + +static void + +insertdict_clean(register PyDictObject *mp, PyObject *key, Py_hash_t hash, + + PyObject *value) + +{ + + register size_t i; + + register size_t perturb; + + register size_t mask = (size_t)mp->ma_mask; + + PyDictEntry *ep0 = mp->ma_table; + + register PyDictEntry *ep; + + + MAINTAIN_TRACKING(mp, key, value); + + i = (size_t)hash & mask; + + ep = &ep0[i]; + + for (perturb = hash; ep->me_key != NULL; perturb >>= PERTURB_SHIFT) { + + i = (i << 2) + i + perturb + 1; + + ep = &ep0[i & mask]; + + } + + assert(ep->me_value == NULL); + + mp->ma_fill++; + + ep->me_key = key; + + ep->me_hash = hash; + + ep->me_value = value; + + mp->ma_used++; + +} + + +/* + +Restructure the table by allocating a new table and reinserting all + +items again. When entries have been deleted, the new table may + +actually be smaller than the old one. + +*/ + +static int + +dictresize(PyDictObject *mp, Py_ssize_t minused) + +{ + + Py_ssize_t newsize; + + PyDictEntry *oldtable, *newtable, *ep; + + Py_ssize_t i; + + int is_oldtable_malloced; + + PyDictEntry small_copy[PyDict_MINSIZE]; + + + assert(minused >= 0); + + + /* Find the smallest table size > minused. */ + + for (newsize = PyDict_MINSIZE; + + newsize <= minused && newsize > 0; + + newsize <<= 1) + + ; + + if (newsize <= 0) { + + PyErr_NoMemory(); + + return -1; + + } + + + /* Get space for a new table. */ + + oldtable = mp->ma_table; + + assert(oldtable != NULL); + + is_oldtable_malloced = oldtable != mp->ma_smalltable; + + + if (newsize == PyDict_MINSIZE) { + + /* A large table is shrinking, or we can't get any smaller. */ + + newtable = mp->ma_smalltable; + + if (newtable == oldtable) { + + if (mp->ma_fill == mp->ma_used) { + + /* No dummies, so no point doing anything. */ + + return 0; + + } + + /* We're not going to resize it, but rebuild the + + table anyway to purge old dummy entries. + + Subtle: This is *necessary* if fill==size, + + as lookdict needs at least one virgin slot to + + terminate failing searches. If fill < size, it's + + merely desirable, as dummies slow searches. */ + + assert(mp->ma_fill > mp->ma_used); + + memcpy(small_copy, oldtable, sizeof(small_copy)); + + oldtable = small_copy; + + } + + } + + else { + + newtable = PyMem_NEW(PyDictEntry, newsize); + + if (newtable == NULL) { + + PyErr_NoMemory(); + + return -1; + + } + + } + + + /* Make the dict empty, using the new table. */ + + assert(newtable != oldtable); + + mp->ma_table = newtable; + + mp->ma_mask = newsize - 1; + + memset(newtable, 0, sizeof(PyDictEntry) * newsize); + + mp->ma_used = 0; + + i = mp->ma_fill; + + mp->ma_fill = 0; + + + /* Copy the data over; this is refcount-neutral for active entries; + + dummy entries aren't copied over, of course */ + + for (ep = oldtable; i > 0; ep++) { + + if (ep->me_value != NULL) { /* active entry */ + + --i; + + insertdict_clean(mp, ep->me_key, ep->me_hash, ep->me_value); + + } + + else if (ep->me_key != NULL) { /* dummy entry */ + + --i; + + assert(ep->me_key == dummy); + + Py_DECREF(ep->me_key); + + } + + /* else key == value == NULL: nothing to do */ + + } + + + if (is_oldtable_malloced) + + PyMem_DEL(oldtable); + + return 0; + +} + + +/* Create a new dictionary pre-sized to hold an estimated number of elements. + + Underestimates are okay because the dictionary will resize as necessary. + + Overestimates just mean the dictionary will be more sparse than usual. + +*/ + + +PyObject * + +_PyDict_NewPresized(Py_ssize_t minused) + +{ + + PyObject *op = PyDict_New(); + + + if (minused>5 && op != NULL && dictresize((PyDictObject *)op, minused) == -1) { + + Py_DECREF(op); + + return NULL; + + } + + return op; + +} + + +/* Note that, for historical reasons, PyDict_GetItem() suppresses all errors + + * that may occur (originally dicts supported only string keys, and exceptions + + * weren't possible). So, while the original intent was that a NULL return + + * meant the key wasn't present, in reality it can mean that, or that an error + + * (suppressed) occurred while computing the key's hash, or that some error + + * (suppressed) occurred when comparing keys in the dict's internal probe + + * sequence. A nasty example of the latter is when a Python-coded comparison + + * function hits a stack-depth error, which can cause this to return NULL + + * even if the key is present. + + */ + +PyObject * + +PyDict_GetItem(PyObject *op, PyObject *key) + +{ + + Py_hash_t hash; + + PyDictObject *mp = (PyDictObject *)op; + + PyDictEntry *ep; + + PyThreadState *tstate; + + if (!PyDict_Check(op)) + + return NULL; + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) + + { + + hash = PyObject_Hash(key); + + if (hash == -1) { + + PyErr_Clear(); + + return NULL; + + } + + } + + + /* We can arrive here with a NULL tstate during initialization: try + + running "python -Wi" for an example related to string interning. + + Let's just hope that no exception occurs then... This must be + + _PyThreadState_Current and not PyThreadState_GET() because in debug + + mode, the latter complains if tstate is NULL. */ + + tstate = (PyThreadState*)_Py_atomic_load_relaxed( + + &_PyThreadState_Current); + + if (tstate != NULL && tstate->curexc_type != NULL) { + + /* preserve the existing exception */ + + PyObject *err_type, *err_value, *err_tb; + + PyErr_Fetch(&err_type, &err_value, &err_tb); + + ep = (mp->ma_lookup)(mp, key, hash); + + /* ignore errors */ + + PyErr_Restore(err_type, err_value, err_tb); + + if (ep == NULL) + + return NULL; + + } + + else { + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) { + + PyErr_Clear(); + + return NULL; + + } + + } + + return ep->me_value; + +} + + +/* Variant of PyDict_GetItem() that doesn't suppress exceptions. + + This returns NULL *with* an exception set if an exception occurred. + + It returns NULL *without* an exception set if the key wasn't present. + +*/ + +PyObject * + +PyDict_GetItemWithError(PyObject *op, PyObject *key) + +{ + + Py_hash_t hash; + + PyDictObject*mp = (PyDictObject *)op; + + PyDictEntry *ep; + + + if (!PyDict_Check(op)) { + + PyErr_BadInternalCall(); + + return NULL; + + } + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) + + { + + hash = PyObject_Hash(key); + + if (hash == -1) { + + return NULL; + + } + + } + + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) + + return NULL; + + return ep->me_value; + +} + + +/* CAUTION: PyDict_SetItem() must guarantee that it won't resize the + + * dictionary if it's merely replacing the value for an existing key. + + * This means that it's safe to loop over a dictionary with PyDict_Next() + + * and occasionally replace a value -- but you can't insert new keys or + + * remove them. + + */ + +int + +PyDict_SetItem(register PyObject *op, PyObject *key, PyObject *value) + +{ + + register PyDictObject *mp; + + register Py_hash_t hash; + + register Py_ssize_t n_used; + + + if (!PyDict_Check(op)) { + + PyErr_BadInternalCall(); + + return -1; + + } + + assert(key); + + assert(value); + + mp = (PyDictObject *)op; + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) + + { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return -1; + + } + + assert(mp->ma_fill <= mp->ma_mask); /* at least one empty slot */ + + n_used = mp->ma_used; + + Py_INCREF(value); + + Py_INCREF(key); + + if (insertdict(mp, key, hash, value) != 0) + + return -1; + + /* If we added a key, we can safely resize. Otherwise just return! + + * If fill >= 2/3 size, adjust size. Normally, this doubles or + + * quaduples the size, but it's also possible for the dict to shrink + + * (if ma_fill is much larger than ma_used, meaning a lot of dict + + * keys have been * deleted). + + * + + * Quadrupling the size improves average dictionary sparseness + + * (reducing collisions) at the cost of some memory and iteration + + * speed (which loops over every possible entry). It also halves + + * the number of expensive resize operations in a growing dictionary. + + * + + * Very large dictionaries (over 50K items) use doubling instead. + + * This may help applications with severe memory constraints. + + */ + + if (!(mp->ma_used > n_used && mp->ma_fill*3 >= (mp->ma_mask+1)*2)) + + return 0; + + return dictresize(mp, (mp->ma_used > 50000 ? 2 : 4) * mp->ma_used); + +} + + +int + +PyDict_DelItem(PyObject *op, PyObject *key) + +{ + + register PyDictObject *mp; + + register Py_hash_t hash; + + register PyDictEntry *ep; + + PyObject *old_value, *old_key; + + + if (!PyDict_Check(op)) { + + PyErr_BadInternalCall(); + + return -1; + + } + + assert(key); + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return -1; + + } + + mp = (PyDictObject *)op; + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) + + return -1; + + if (ep->me_value == NULL) { + + set_key_error(key); + + return -1; + + } + + old_key = ep->me_key; + + Py_INCREF(dummy); + + ep->me_key = dummy; + + old_value = ep->me_value; + + ep->me_value = NULL; + + mp->ma_used--; + + Py_DECREF(old_value); + + Py_DECREF(old_key); + + return 0; + +} + + +void + +PyDict_Clear(PyObject *op) + +{ + + PyDictObject *mp; + + PyDictEntry *ep, *table; + + int table_is_malloced; + + Py_ssize_t fill; + + PyDictEntry small_copy[PyDict_MINSIZE]; + +#ifdef Py_DEBUG + + Py_ssize_t i, n; + +#endif + + + if (!PyDict_Check(op)) + + return; + + mp = (PyDictObject *)op; + +#ifdef Py_DEBUG + + n = mp->ma_mask + 1; + + i = 0; + +#endif + + + table = mp->ma_table; + + assert(table != NULL); + + table_is_malloced = table != mp->ma_smalltable; + + + /* This is delicate. During the process of clearing the dict, + + * decrefs can cause the dict to mutate. To avoid fatal confusion + + * (voice of experience), we have to make the dict empty before + + * clearing the slots, and never refer to anything via mp->xxx while + + * clearing. + + */ + + fill = mp->ma_fill; + + if (table_is_malloced) + + EMPTY_TO_MINSIZE(mp); + + + else if (fill > 0) { + + /* It's a small table with something that needs to be cleared. + + * Afraid the only safe way is to copy the dict entries into + + * another small table first. + + */ + + memcpy(small_copy, table, sizeof(small_copy)); + + table = small_copy; + + EMPTY_TO_MINSIZE(mp); + + } + + /* else it's a small table that's already empty */ + + + /* Now we can finally clear things. If C had refcounts, we could + + * assert that the refcount on table is 1 now, i.e. that this function + + * has unique access to it, so decref side-effects can't alter it. + + */ + + for (ep = table; fill > 0; ++ep) { + +#ifdef Py_DEBUG + + assert(i < n); + + ++i; + +#endif + + if (ep->me_key) { + + --fill; + + Py_DECREF(ep->me_key); + + Py_XDECREF(ep->me_value); + + } + +#ifdef Py_DEBUG + + else + + assert(ep->me_value == NULL); + +#endif + + } + + + if (table_is_malloced) + + PyMem_DEL(table); + +} + + +/* + + * Iterate over a dict. Use like so: + + * + + * Py_ssize_t i; + + * PyObject *key, *value; + + * i = 0; # important! i should not otherwise be changed by you + + * while (PyDict_Next(yourdict, &i, &key, &value)) { + + * Refer to borrowed references in key and value. + + * } + + * + + * CAUTION: In general, it isn't safe to use PyDict_Next in a loop that + + * mutates the dict. One exception: it is safe if the loop merely changes + + * the values associated with the keys (but doesn't insert new keys or + + * delete keys), via PyDict_SetItem(). + + */ + +int + +PyDict_Next(PyObject *op, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) + +{ + + register Py_ssize_t i; + + register Py_ssize_t mask; + + register PyDictEntry *ep; + + + if (!PyDict_Check(op)) + + return 0; + + i = *ppos; + + if (i < 0) + + return 0; + + ep = ((PyDictObject *)op)->ma_table; + + mask = ((PyDictObject *)op)->ma_mask; + + while (i <= mask && ep[i].me_value == NULL) + + i++; + + *ppos = i+1; + + if (i > mask) + + return 0; + + if (pkey) + + *pkey = ep[i].me_key; + + if (pvalue) + + *pvalue = ep[i].me_value; + + return 1; + +} + + +/* Internal version of PyDict_Next that returns a hash value in addition to the key and value.*/ + +int + +_PyDict_Next(PyObject *op, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue, Py_hash_t *phash) + +{ + + register Py_ssize_t i; + + register Py_ssize_t mask; + + register PyDictEntry *ep; + + + if (!PyDict_Check(op)) + + return 0; + + i = *ppos; + + if (i < 0) + + return 0; + + ep = ((PyDictObject *)op)->ma_table; + + mask = ((PyDictObject *)op)->ma_mask; + + while (i <= mask && ep[i].me_value == NULL) + + i++; + + *ppos = i+1; + + if (i > mask) + + return 0; + + *phash = ep[i].me_hash; + + if (pkey) + + *pkey = ep[i].me_key; + + if (pvalue) + + *pvalue = ep[i].me_value; + + return 1; + +} + + +/* Methods */ + + +static void + +dict_dealloc(register PyDictObject *mp) + +{ + + register PyDictEntry *ep; + + Py_ssize_t fill = mp->ma_fill; + + PyObject_GC_UnTrack(mp); + + Py_TRASHCAN_SAFE_BEGIN(mp) + + for (ep = mp->ma_table; fill > 0; ep++) { + + if (ep->me_key) { + + --fill; + + Py_DECREF(ep->me_key); + + Py_XDECREF(ep->me_value); + + } + + } + + if (mp->ma_table != mp->ma_smalltable) + + PyMem_DEL(mp->ma_table); + + if (numfree < PyDict_MAXFREELIST && Py_TYPE(mp) == &PyDict_Type) + + free_list[numfree++] = mp; + + else + + Py_TYPE(mp)->tp_free((PyObject *)mp); + + Py_TRASHCAN_SAFE_END(mp) + +} + + +static PyObject * + +dict_repr(PyDictObject *mp) + +{ + + Py_ssize_t i; + + PyObject *s, *temp, *colon = NULL; + + PyObject *pieces = NULL, *result = NULL; + + PyObject *key, *value; + + + i = Py_ReprEnter((PyObject *)mp); + + if (i != 0) { + + return i > 0 ? PyUnicode_FromString("{...}") : NULL; + + } + + + if (mp->ma_used == 0) { + + result = PyUnicode_FromString("{}"); + + goto Done; + + } + + + pieces = PyList_New(0); + + if (pieces == NULL) + + goto Done; + + + colon = PyUnicode_FromString(": "); + + if (colon == NULL) + + goto Done; + + + /* Do repr() on each key+value pair, and insert ": " between them. + + Note that repr may mutate the dict. */ + + i = 0; + + while (PyDict_Next((PyObject *)mp, &i, &key, &value)) { + + int status; + + /* Prevent repr from deleting value during key format. */ + + Py_INCREF(value); + + s = PyObject_Repr(key); + + PyUnicode_Append(&s, colon); + + PyUnicode_AppendAndDel(&s, PyObject_Repr(value)); + + Py_DECREF(value); + + if (s == NULL) + + goto Done; + + status = PyList_Append(pieces, s); + + Py_DECREF(s); /* append created a new ref */ + + if (status < 0) + + goto Done; + + } + + + /* Add "{}" decorations to the first and last items. */ + + assert(PyList_GET_SIZE(pieces) > 0); + + s = PyUnicode_FromString("{"); + + if (s == NULL) + + goto Done; + + temp = PyList_GET_ITEM(pieces, 0); + + PyUnicode_AppendAndDel(&s, temp); + + PyList_SET_ITEM(pieces, 0, s); + + if (s == NULL) + + goto Done; + + + s = PyUnicode_FromString("}"); + + if (s == NULL) + + goto Done; + + temp = PyList_GET_ITEM(pieces, PyList_GET_SIZE(pieces) - 1); + + PyUnicode_AppendAndDel(&temp, s); + + PyList_SET_ITEM(pieces, PyList_GET_SIZE(pieces) - 1, temp); + + if (temp == NULL) + + goto Done; + + + /* Paste them all together with ", " between. */ + + s = PyUnicode_FromString(", "); + + if (s == NULL) + + goto Done; + + result = PyUnicode_Join(s, pieces); + + Py_DECREF(s); + + +Done: + + Py_XDECREF(pieces); + + Py_XDECREF(colon); + + Py_ReprLeave((PyObject *)mp); + + return result; + +} + + +static Py_ssize_t + +dict_length(PyDictObject *mp) + +{ + + return mp->ma_used; + +} + + +static PyObject * + +dict_subscript(PyDictObject *mp, register PyObject *key) + +{ + + PyObject *v; + + Py_hash_t hash; + + PyDictEntry *ep; + + assert(mp->ma_table != NULL); + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return NULL; + + } + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) + + return NULL; + + v = ep->me_value; + + if (v == NULL) { + + if (!PyDict_CheckExact(mp)) { + + /* Look up __missing__ method if we're a subclass. */ + + PyObject *missing, *res; + + _Py_IDENTIFIER(__missing__); + + missing = _PyObject_LookupSpecial((PyObject *)mp, &PyId___missing__); + + if (missing != NULL) { + + res = PyObject_CallFunctionObjArgs(missing, + + key, NULL); + + Py_DECREF(missing); + + return res; + + } + + else if (PyErr_Occurred()) + + return NULL; + + } + + set_key_error(key); + + return NULL; + + } + + else + + Py_INCREF(v); + + return v; + +} + + +static int + +dict_ass_sub(PyDictObject *mp, PyObject *v, PyObject *w) + +{ + + if (w == NULL) + + return PyDict_DelItem((PyObject *)mp, v); + + else + + return PyDict_SetItem((PyObject *)mp, v, w); + +} + + +static PyMappingMethods dict_as_mapping = { + + (lenfunc)dict_length, /*mp_length*/ + + (binaryfunc)dict_subscript, /*mp_subscript*/ + + (objobjargproc)dict_ass_sub, /*mp_ass_subscript*/ + +}; + + +static PyObject * + +dict_keys(register PyDictObject *mp) + +{ + + register PyObject *v; + + register Py_ssize_t i, j; + + PyDictEntry *ep; + + Py_ssize_t mask, n; + + + again: + + n = mp->ma_used; + + v = PyList_New(n); + + if (v == NULL) + + return NULL; + + if (n != mp->ma_used) { + + /* Durnit. The allocations caused the dict to resize. + + * Just start over, this shouldn't normally happen. + + */ + + Py_DECREF(v); + + goto again; + + } + + ep = mp->ma_table; + + mask = mp->ma_mask; + + for (i = 0, j = 0; i <= mask; i++) { + + if (ep[i].me_value != NULL) { + + PyObject *key = ep[i].me_key; + + Py_INCREF(key); + + PyList_SET_ITEM(v, j, key); + + j++; + + } + + } + + assert(j == n); + + return v; + +} + + +static PyObject * + +dict_values(register PyDictObject *mp) + +{ + + register PyObject *v; + + register Py_ssize_t i, j; + + PyDictEntry *ep; + + Py_ssize_t mask, n; + + + again: + + n = mp->ma_used; + + v = PyList_New(n); + + if (v == NULL) + + return NULL; + + if (n != mp->ma_used) { + + /* Durnit. The allocations caused the dict to resize. + + * Just start over, this shouldn't normally happen. + + */ + + Py_DECREF(v); + + goto again; + + } + + ep = mp->ma_table; + + mask = mp->ma_mask; + + for (i = 0, j = 0; i <= mask; i++) { + + if (ep[i].me_value != NULL) { + + PyObject *value = ep[i].me_value; + + Py_INCREF(value); + + PyList_SET_ITEM(v, j, value); + + j++; + + } + + } + + assert(j == n); + + return v; + +} + + +static PyObject * + +dict_items(register PyDictObject *mp) + +{ + + register PyObject *v; + + register Py_ssize_t i, j, n; + + Py_ssize_t mask; + + PyObject *item, *key, *value; + + PyDictEntry *ep; + + + /* Preallocate the list of tuples, to avoid allocations during + + * the loop over the items, which could trigger GC, which + + * could resize the dict. :-( + + */ + + again: + + n = mp->ma_used; + + v = PyList_New(n); + + if (v == NULL) + + return NULL; + + for (i = 0; i < n; i++) { + + item = PyTuple_New(2); + + if (item == NULL) { + + Py_DECREF(v); + + return NULL; + + } + + PyList_SET_ITEM(v, i, item); + + } + + if (n != mp->ma_used) { + + /* Durnit. The allocations caused the dict to resize. + + * Just start over, this shouldn't normally happen. + + */ + + Py_DECREF(v); + + goto again; + + } + + /* Nothing we do below makes any function calls. */ + + ep = mp->ma_table; + + mask = mp->ma_mask; + + for (i = 0, j = 0; i <= mask; i++) { + + if ((value=ep[i].me_value) != NULL) { + + key = ep[i].me_key; + + item = PyList_GET_ITEM(v, j); + + Py_INCREF(key); + + PyTuple_SET_ITEM(item, 0, key); + + Py_INCREF(value); + + PyTuple_SET_ITEM(item, 1, value); + + j++; + + } + + } + + assert(j == n); + + return v; + +} + + +static PyObject * + +dict_fromkeys(PyObject *cls, PyObject *args) + +{ + + PyObject *seq; + + PyObject *value = Py_None; + + PyObject *it; /* iter(seq) */ + + PyObject *key; + + PyObject *d; + + int status; + + + if (!PyArg_UnpackTuple(args, "fromkeys", 1, 2, &seq, &value)) + + return NULL; + + + d = PyObject_CallObject(cls, NULL); + + if (d == NULL) + + return NULL; + + + if (PyDict_CheckExact(d) && PyDict_CheckExact(seq)) { + + PyDictObject *mp = (PyDictObject *)d; + + PyObject *oldvalue; + + Py_ssize_t pos = 0; + + PyObject *key; + + Py_hash_t hash; + + + if (dictresize(mp, Py_SIZE(seq))) { + + Py_DECREF(d); + + return NULL; + + } + + + while (_PyDict_Next(seq, &pos, &key, &oldvalue, &hash)) { + + Py_INCREF(key); + + Py_INCREF(value); + + if (insertdict(mp, key, hash, value)) { + + Py_DECREF(d); + + return NULL; + + } + + } + + return d; + + } + + + if (PyDict_CheckExact(d) && PyAnySet_CheckExact(seq)) { + + PyDictObject *mp = (PyDictObject *)d; + + Py_ssize_t pos = 0; + + PyObject *key; + + Py_hash_t hash; + + + if (dictresize(mp, PySet_GET_SIZE(seq))) { + + Py_DECREF(d); + + return NULL; + + } + + + while (_PySet_NextEntry(seq, &pos, &key, &hash)) { + + Py_INCREF(key); + + Py_INCREF(value); + + if (insertdict(mp, key, hash, value)) { + + Py_DECREF(d); + + return NULL; + + } + + } + + return d; + + } + + + it = PyObject_GetIter(seq); + + if (it == NULL){ + + Py_DECREF(d); + + return NULL; + + } + + + if (PyDict_CheckExact(d)) { + + while ((key = PyIter_Next(it)) != NULL) { + + status = PyDict_SetItem(d, key, value); + + Py_DECREF(key); + + if (status < 0) + + goto Fail; + + } + + } else { + + while ((key = PyIter_Next(it)) != NULL) { + + status = PyObject_SetItem(d, key, value); + + Py_DECREF(key); + + if (status < 0) + + goto Fail; + + } + + } + + + if (PyErr_Occurred()) + + goto Fail; + + Py_DECREF(it); + + return d; + + +Fail: + + Py_DECREF(it); + + Py_DECREF(d); + + return NULL; + +} + + +static int + +dict_update_common(PyObject *self, PyObject *args, PyObject *kwds, char *methname) + +{ + + PyObject *arg = NULL; + + int result = 0; + + + if (!PyArg_UnpackTuple(args, methname, 0, 1, &arg)) + + result = -1; + + + else if (arg != NULL) { + + _Py_IDENTIFIER(keys); + + if (_PyObject_HasAttrId(arg, &PyId_keys)) + + result = PyDict_Merge(self, arg, 1); + + else + + result = PyDict_MergeFromSeq2(self, arg, 1); + + } + + if (result == 0 && kwds != NULL) { + + if (PyArg_ValidateKeywordArguments(kwds)) + + result = PyDict_Merge(self, kwds, 1); + + else + + result = -1; + + } + + return result; + +} + + +static PyObject * + +dict_update(PyObject *self, PyObject *args, PyObject *kwds) + +{ + + if (dict_update_common(self, args, kwds, "update") != -1) + + Py_RETURN_NONE; + + return NULL; + +} + + +/* Update unconditionally replaces existing items. + + Merge has a 3rd argument 'override'; if set, it acts like Update, + + otherwise it leaves existing items unchanged. + + + PyDict_{Update,Merge} update/merge from a mapping object. + + + PyDict_MergeFromSeq2 updates/merges from any iterable object + + producing iterable objects of length 2. + +*/ + + +int + +PyDict_MergeFromSeq2(PyObject *d, PyObject *seq2, int override) + +{ + + PyObject *it; /* iter(seq2) */ + + Py_ssize_t i; /* index into seq2 of current element */ + + PyObject *item; /* seq2[i] */ + + PyObject *fast; /* item as a 2-tuple or 2-list */ + + + assert(d != NULL); + + assert(PyDict_Check(d)); + + assert(seq2 != NULL); + + + it = PyObject_GetIter(seq2); + + if (it == NULL) + + return -1; + + + for (i = 0; ; ++i) { + + PyObject *key, *value; + + Py_ssize_t n; + + + fast = NULL; + + item = PyIter_Next(it); + + if (item == NULL) { + + if (PyErr_Occurred()) + + goto Fail; + + break; + + } + + + /* Convert item to sequence, and verify length 2. */ + + fast = PySequence_Fast(item, ""); + + if (fast == NULL) { + + if (PyErr_ExceptionMatches(PyExc_TypeError)) + + PyErr_Format(PyExc_TypeError, + + "cannot convert dictionary update " + + "sequence element #%zd to a sequence", + + i); + + goto Fail; + + } + + n = PySequence_Fast_GET_SIZE(fast); + + if (n != 2) { + + PyErr_Format(PyExc_ValueError, + + "dictionary update sequence element #%zd " + + "has length %zd; 2 is required", + + i, n); + + goto Fail; + + } + + + /* Update/merge with this (key, value) pair. */ + + key = PySequence_Fast_GET_ITEM(fast, 0); + + value = PySequence_Fast_GET_ITEM(fast, 1); + + if (override || PyDict_GetItem(d, key) == NULL) { + + int status = PyDict_SetItem(d, key, value); + + if (status < 0) + + goto Fail; + + } + + Py_DECREF(fast); + + Py_DECREF(item); + + } + + + i = 0; + + goto Return; + +Fail: + + Py_XDECREF(item); + + Py_XDECREF(fast); + + i = -1; + +Return: + + Py_DECREF(it); + + return Py_SAFE_DOWNCAST(i, Py_ssize_t, int); + +} + + +int + +PyDict_Update(PyObject *a, PyObject *b) + +{ + + return PyDict_Merge(a, b, 1); + +} + + +int + +PyDict_Merge(PyObject *a, PyObject *b, int override) + +{ + + register PyDictObject *mp, *other; + + register Py_ssize_t i; + + PyDictEntry *entry; + + + /* We accept for the argument either a concrete dictionary object, + + * or an abstract "mapping" object. For the former, we can do + + * things quite efficiently. For the latter, we only require that + + * PyMapping_Keys() and PyObject_GetItem() be supported. + + */ + + if (a == NULL || !PyDict_Check(a) || b == NULL) { + + PyErr_BadInternalCall(); + + return -1; + + } + + mp = (PyDictObject*)a; + + if (PyDict_Check(b)) { + + other = (PyDictObject*)b; + + if (other == mp || other->ma_used == 0) + + /* a.update(a) or a.update({}); nothing to do */ + + return 0; + + if (mp->ma_used == 0) + + /* Since the target dict is empty, PyDict_GetItem() + + * always returns NULL. Setting override to 1 + + * skips the unnecessary test. + + */ + + override = 1; + + /* Do one big resize at the start, rather than + + * incrementally resizing as we insert new items. Expect + + * that there will be no (or few) overlapping keys. + + */ + + if ((mp->ma_fill + other->ma_used)*3 >= (mp->ma_mask+1)*2) { + + if (dictresize(mp, (mp->ma_used + other->ma_used)*2) != 0) + + return -1; + + } + + for (i = 0; i <= other->ma_mask; i++) { + + entry = &other->ma_table[i]; + + if (entry->me_value != NULL && + + (override || + + PyDict_GetItem(a, entry->me_key) == NULL)) { + + Py_INCREF(entry->me_key); + + Py_INCREF(entry->me_value); + + if (insertdict(mp, entry->me_key, + + entry->me_hash, + + entry->me_value) != 0) + + return -1; + + } + + } + + } + + else { + + /* Do it the generic, slower way */ + + PyObject *keys = PyMapping_Keys(b); + + PyObject *iter; + + PyObject *key, *value; + + int status; + + + if (keys == NULL) + + /* Docstring says this is equivalent to E.keys() so + + * if E doesn't have a .keys() method we want + + * AttributeError to percolate up. Might as well + + * do the same for any other error. + + */ + + return -1; + + + iter = PyObject_GetIter(keys); + + Py_DECREF(keys); + + if (iter == NULL) + + return -1; + + + for (key = PyIter_Next(iter); key; key = PyIter_Next(iter)) { + + if (!override && PyDict_GetItem(a, key) != NULL) { + + Py_DECREF(key); + + continue; + + } + + value = PyObject_GetItem(b, key); + + if (value == NULL) { + + Py_DECREF(iter); + + Py_DECREF(key); + + return -1; + + } + + status = PyDict_SetItem(a, key, value); + + Py_DECREF(key); + + Py_DECREF(value); + + if (status < 0) { + + Py_DECREF(iter); + + return -1; + + } + + } + + Py_DECREF(iter); + + if (PyErr_Occurred()) + + /* Iterator completed, via error */ + + return -1; + + } + + return 0; + +} + + +static PyObject * + +dict_copy(register PyDictObject *mp) + +{ + + return PyDict_Copy((PyObject*)mp); + +} + + +PyObject * + +PyDict_Copy(PyObject *o) + +{ + + PyObject *copy; + + + if (o == NULL || !PyDict_Check(o)) { + + PyErr_BadInternalCall(); + + return NULL; + + } + + copy = PyDict_New(); + + if (copy == NULL) + + return NULL; + + if (PyDict_Merge(copy, o, 1) == 0) + + return copy; + + Py_DECREF(copy); + + return NULL; + +} + + +Py_ssize_t + +PyDict_Size(PyObject *mp) + +{ + + if (mp == NULL || !PyDict_Check(mp)) { + + PyErr_BadInternalCall(); + + return -1; + + } + + return ((PyDictObject *)mp)->ma_used; + +} + + +PyObject * + +PyDict_Keys(PyObject *mp) + +{ + + if (mp == NULL || !PyDict_Check(mp)) { + + PyErr_BadInternalCall(); + + return NULL; + + } + + return dict_keys((PyDictObject *)mp); + +} + + +PyObject * + +PyDict_Values(PyObject *mp) + +{ + + if (mp == NULL || !PyDict_Check(mp)) { + + PyErr_BadInternalCall(); + + return NULL; + + } + + return dict_values((PyDictObject *)mp); + +} + + +PyObject * + +PyDict_Items(PyObject *mp) + +{ + + if (mp == NULL || !PyDict_Check(mp)) { + + PyErr_BadInternalCall(); + + return NULL; + + } + + return dict_items((PyDictObject *)mp); + +} + + +/* Return 1 if dicts equal, 0 if not, -1 if error. + + * Gets out as soon as any difference is detected. + + * Uses only Py_EQ comparison. + + */ + +static int + +dict_equal(PyDictObject *a, PyDictObject *b) + +{ + + Py_ssize_t i; + + + if (a->ma_used != b->ma_used) + + /* can't be equal if # of entries differ */ + + return 0; + + + /* Same # of entries -- check all of 'em. Exit early on any diff. */ + + for (i = 0; i <= a->ma_mask; i++) { + + PyObject *aval = a->ma_table[i].me_value; + + if (aval != NULL) { + + int cmp; + + PyObject *bval; + + PyObject *key = a->ma_table[i].me_key; + + /* temporarily bump aval's refcount to ensure it stays + + alive until we're done with it */ + + Py_INCREF(aval); + + /* ditto for key */ + + Py_INCREF(key); + + bval = PyDict_GetItemWithError((PyObject *)b, key); + + Py_DECREF(key); + + if (bval == NULL) { + + Py_DECREF(aval); + + if (PyErr_Occurred()) + + return -1; + + return 0; + + } + + cmp = PyObject_RichCompareBool(aval, bval, Py_EQ); + + Py_DECREF(aval); + + if (cmp <= 0) /* error or not equal */ + + return cmp; + + } + + } + + return 1; + + } + + +static PyObject * + +dict_richcompare(PyObject *v, PyObject *w, int op) + +{ + + int cmp; + + PyObject *res; + + + if (!PyDict_Check(v) || !PyDict_Check(w)) { + + res = Py_NotImplemented; + + } + + else if (op == Py_EQ || op == Py_NE) { + + cmp = dict_equal((PyDictObject *)v, (PyDictObject *)w); + + if (cmp < 0) + + return NULL; + + res = (cmp == (op == Py_EQ)) ? Py_True : Py_False; + + } + + else + + res = Py_NotImplemented; + + Py_INCREF(res); + + return res; + + } + + +static PyObject * + +dict_contains(register PyDictObject *mp, PyObject *key) + +{ + + Py_hash_t hash; + + PyDictEntry *ep; + + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return NULL; + + } + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) + + return NULL; + + return PyBool_FromLong(ep->me_value != NULL); + +} + + +static PyObject * + +dict_get(register PyDictObject *mp, PyObject *args) + +{ + + PyObject *key; + + PyObject *failobj = Py_None; + + PyObject *val = NULL; + + Py_hash_t hash; + + PyDictEntry *ep; + + + if (!PyArg_UnpackTuple(args, "get", 1, 2, &key, &failobj)) + + return NULL; + + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return NULL; + + } + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) + + return NULL; + + val = ep->me_value; + + if (val == NULL) + + val = failobj; + + Py_INCREF(val); + + return val; + +} + + + +static PyObject * + +dict_setdefault(register PyDictObject *mp, PyObject *args) + +{ + + PyObject *key; + + PyObject *failobj = Py_None; + + PyObject *val = NULL; + + Py_hash_t hash; + + PyDictEntry *ep; + + + if (!PyArg_UnpackTuple(args, "setdefault", 1, 2, &key, &failobj)) + + return NULL; + + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return NULL; + + } + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) + + return NULL; + + val = ep->me_value; + + if (val == NULL) { + + val = failobj; + + if (PyDict_SetItem((PyObject*)mp, key, failobj)) + + val = NULL; + + } + + Py_XINCREF(val); + + return val; + +} + + + +static PyObject * + +dict_clear(register PyDictObject *mp) + +{ + + PyDict_Clear((PyObject *)mp); + + Py_RETURN_NONE; + +} + + +static PyObject * + +dict_pop(PyDictObject *mp, PyObject *args) + +{ + + Py_hash_t hash; + + PyDictEntry *ep; + + PyObject *old_value, *old_key; + + PyObject *key, *deflt = NULL; + + + if(!PyArg_UnpackTuple(args, "pop", 1, 2, &key, &deflt)) + + return NULL; + + if (mp->ma_used == 0) { + + if (deflt) { + + Py_INCREF(deflt); + + return deflt; + + } + + set_key_error(key); + + return NULL; + + } + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return NULL; + + } + + ep = (mp->ma_lookup)(mp, key, hash); + + if (ep == NULL) + + return NULL; + + if (ep->me_value == NULL) { + + if (deflt) { + + Py_INCREF(deflt); + + return deflt; + + } + + set_key_error(key); + + return NULL; + + } + + old_key = ep->me_key; + + Py_INCREF(dummy); + + ep->me_key = dummy; + + old_value = ep->me_value; + + ep->me_value = NULL; + + mp->ma_used--; + + Py_DECREF(old_key); + + return old_value; + +} + + +static PyObject * + +dict_popitem(PyDictObject *mp) + +{ + + Py_hash_t i = 0; + + PyDictEntry *ep; + + PyObject *res; + + + /* Allocate the result tuple before checking the size. Believe it + + * or not, this allocation could trigger a garbage collection which + + * could empty the dict, so if we checked the size first and that + + * happened, the result would be an infinite loop (searching for an + + * entry that no longer exists). Note that the usual popitem() + + * idiom is "while d: k, v = d.popitem()". so needing to throw the + + * tuple away if the dict *is* empty isn't a significant + + * inefficiency -- possible, but unlikely in practice. + + */ + + res = PyTuple_New(2); + + if (res == NULL) + + return NULL; + + if (mp->ma_used == 0) { + + Py_DECREF(res); + + PyErr_SetString(PyExc_KeyError, + + "popitem(): dictionary is empty"); + + return NULL; + + } + + /* Set ep to "the first" dict entry with a value. We abuse the hash + + * field of slot 0 to hold a search finger: + + * If slot 0 has a value, use slot 0. + + * Else slot 0 is being used to hold a search finger, + + * and we use its hash value as the first index to look. + + */ + + ep = &mp->ma_table[0]; + + if (ep->me_value == NULL) { + + i = ep->me_hash; + + /* The hash field may be a real hash value, or it may be a + + * legit search finger, or it may be a once-legit search + + * finger that's out of bounds now because it wrapped around + + * or the table shrunk -- simply make sure it's in bounds now. + + */ + + if (i > mp->ma_mask || i < 1) + + i = 1; /* skip slot 0 */ + + while ((ep = &mp->ma_table[i])->me_value == NULL) { + + i++; + + if (i > mp->ma_mask) + + i = 1; + + } + + } + + PyTuple_SET_ITEM(res, 0, ep->me_key); + + PyTuple_SET_ITEM(res, 1, ep->me_value); + + Py_INCREF(dummy); + + ep->me_key = dummy; + + ep->me_value = NULL; + + mp->ma_used--; + + assert(mp->ma_table[0].me_value == NULL); + + mp->ma_table[0].me_hash = i + 1; /* next place to start */ + + return res; + +} + + +static int + +dict_traverse(PyObject *op, visitproc visit, void *arg) + +{ + + Py_ssize_t i = 0; + + PyObject *pk; + + PyObject *pv; + + + while (PyDict_Next(op, &i, &pk, &pv)) { + + Py_VISIT(pk); + + Py_VISIT(pv); + + } + + return 0; + +} + + +static int + +dict_tp_clear(PyObject *op) + +{ + + PyDict_Clear(op); + + return 0; + +} + + +static PyObject *dictiter_new(PyDictObject *, PyTypeObject *); + + +static PyObject * + +dict_sizeof(PyDictObject *mp) + +{ + + Py_ssize_t res; + + + res = sizeof(PyDictObject); + + if (mp->ma_table != mp->ma_smalltable) + + res = res + (mp->ma_mask + 1) * sizeof(PyDictEntry); + + return PyLong_FromSsize_t(res); + +} + + +PyDoc_STRVAR(contains__doc__, + +"D.__contains__(k) -> True if D has a key k, else False"); + + +PyDoc_STRVAR(getitem__doc__, "x.__getitem__(y) <==> x[y]"); + + +PyDoc_STRVAR(sizeof__doc__, + +"D.__sizeof__() -> size of D in memory, in bytes"); + + +PyDoc_STRVAR(get__doc__, + +"D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None."); + + +PyDoc_STRVAR(setdefault_doc__, + +"D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D"); + + +PyDoc_STRVAR(pop__doc__, + +"D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n\ + +If key is not found, d is returned if given, otherwise KeyError is raised"); + + +PyDoc_STRVAR(popitem__doc__, + +"D.popitem() -> (k, v), remove and return some (key, value) pair as a\n\ + +2-tuple; but raise KeyError if D is empty."); + + +PyDoc_STRVAR(update__doc__, + +"D.update([E, ]**F) -> None. Update D from dict/iterable E and F.\n" + +"If E present and has a .keys() method, does: for k in E: D[k] = E[k]\n\ + +If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v\n\ + +In either case, this is followed by: for k in F: D[k] = F[k]"); + + +PyDoc_STRVAR(fromkeys__doc__, + +"dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.\n\ + +v defaults to None."); + + +PyDoc_STRVAR(clear__doc__, + +"D.clear() -> None. Remove all items from D."); + + +PyDoc_STRVAR(copy__doc__, + +"D.copy() -> a shallow copy of D"); + + +/* Forward */ + +static PyObject *dictkeys_new(PyObject *); + +static PyObject *dictitems_new(PyObject *); + +static PyObject *dictvalues_new(PyObject *); + + +PyDoc_STRVAR(keys__doc__, + + "D.keys() -> a set-like object providing a view on D's keys"); + +PyDoc_STRVAR(items__doc__, + + "D.items() -> a set-like object providing a view on D's items"); + +PyDoc_STRVAR(values__doc__, + + "D.values() -> an object providing a view on D's values"); + + +static PyMethodDef mapp_methods[] = { + + {"__contains__",(PyCFunction)dict_contains, METH_O | METH_COEXIST, + + contains__doc__}, + + {"__getitem__", (PyCFunction)dict_subscript, METH_O | METH_COEXIST, + + getitem__doc__}, + + {"__sizeof__", (PyCFunction)dict_sizeof, METH_NOARGS, + + sizeof__doc__}, + + {"get", (PyCFunction)dict_get, METH_VARARGS, + + get__doc__}, + + {"setdefault", (PyCFunction)dict_setdefault, METH_VARARGS, + + setdefault_doc__}, + + {"pop", (PyCFunction)dict_pop, METH_VARARGS, + + pop__doc__}, + + {"popitem", (PyCFunction)dict_popitem, METH_NOARGS, + + popitem__doc__}, + + {"keys", (PyCFunction)dictkeys_new, METH_NOARGS, + + keys__doc__}, + + {"items", (PyCFunction)dictitems_new, METH_NOARGS, + + items__doc__}, + + {"values", (PyCFunction)dictvalues_new, METH_NOARGS, + + values__doc__}, + + {"update", (PyCFunction)dict_update, METH_VARARGS | METH_KEYWORDS, + + update__doc__}, + + {"fromkeys", (PyCFunction)dict_fromkeys, METH_VARARGS | METH_CLASS, + + fromkeys__doc__}, + + {"clear", (PyCFunction)dict_clear, METH_NOARGS, + + clear__doc__}, + + {"copy", (PyCFunction)dict_copy, METH_NOARGS, + + copy__doc__}, + + {NULL, NULL} /* sentinel */ + +}; + + +/* Return 1 if `key` is in dict `op`, 0 if not, and -1 on error. */ + +int + +PyDict_Contains(PyObject *op, PyObject *key) + +{ + + Py_hash_t hash; + + PyDictObject *mp = (PyDictObject *)op; + + PyDictEntry *ep; + + + if (!PyUnicode_CheckExact(key) || + + (hash = ((PyASCIIObject *) key)->hash) == -1) { + + hash = PyObject_Hash(key); + + if (hash == -1) + + return -1; + + } + + ep = (mp->ma_lookup)(mp, key, hash); + + return ep == NULL ? -1 : (ep->me_value != NULL); + +} + + +/* Internal version of PyDict_Contains used when the hash value is already known */ + +int + +_PyDict_Contains(PyObject *op, PyObject *key, Py_hash_t hash) + +{ + + PyDictObject *mp = (PyDictObject *)op; + + PyDictEntry *ep; + + + ep = (mp->ma_lookup)(mp, key, hash); + + return ep == NULL ? -1 : (ep->me_value != NULL); + +} + + +/* Hack to implement "key in dict" */ + +static PySequenceMethods dict_as_sequence = { + + 0, /* sq_length */ + + 0, /* sq_concat */ + + 0, /* sq_repeat */ + + 0, /* sq_item */ + + 0, /* sq_slice */ + + 0, /* sq_ass_item */ + + 0, /* sq_ass_slice */ + + PyDict_Contains, /* sq_contains */ + + 0, /* sq_inplace_concat */ + + 0, /* sq_inplace_repeat */ + +}; + + +static PyObject * + +dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds) + +{ + + PyObject *self; + + + assert(type != NULL && type->tp_alloc != NULL); + + self = type->tp_alloc(type, 0); + + if (self != NULL) { + + PyDictObject *d = (PyDictObject *)self; + + /* It's guaranteed that tp->alloc zeroed out the struct. */ + + assert(d->ma_table == NULL && d->ma_fill == 0 && d->ma_used == 0); + + INIT_NONZERO_DICT_SLOTS(d); + + d->ma_lookup = lookdict_unicode; + + /* The object has been implicitly tracked by tp_alloc */ + + if (type == &PyDict_Type) + + _PyObject_GC_UNTRACK(d); + +#ifdef SHOW_CONVERSION_COUNTS + + ++created; + +#endif + +#ifdef SHOW_TRACK_COUNT + + if (_PyObject_GC_IS_TRACKED(d)) + + count_tracked++; + + else + + count_untracked++; + +#endif + + } + + return self; + +} + + +static int + +dict_init(PyObject *self, PyObject *args, PyObject *kwds) + +{ + + return dict_update_common(self, args, kwds, "dict"); + +} + + +static PyObject * + +dict_iter(PyDictObject *dict) + +{ + + return dictiter_new(dict, &PyDictIterKey_Type); + +} + + +PyDoc_STRVAR(dictionary_doc, + +"dict() -> new empty dictionary\n" + +"dict(mapping) -> new dictionary initialized from a mapping object's\n" + +" (key, value) pairs\n" + +"dict(iterable) -> new dictionary initialized as if via:\n" + +" d = {}\n" + +" for k, v in iterable:\n" + +" d[k] = v\n" + +"dict(**kwargs) -> new dictionary initialized with the name=value pairs\n" + +" in the keyword argument list. For example: dict(one=1, two=2)"); + + +PyTypeObject PyDict_Type = { + + PyVarObject_HEAD_INIT(&PyType_Type, 0) + + "dict", + + sizeof(PyDictObject), + + 0, + + (destructor)dict_dealloc, /* tp_dealloc */ + + 0, /* tp_print */ + + 0, /* tp_getattr */ + + 0, /* tp_setattr */ + + 0, /* tp_reserved */ + + (reprfunc)dict_repr, /* tp_repr */ + + 0, /* tp_as_number */ + + &dict_as_sequence, /* tp_as_sequence */ + + &dict_as_mapping, /* tp_as_mapping */ + + PyObject_HashNotImplemented, /* tp_hash */ + + 0, /* tp_call */ + + 0, /* tp_str */ + + PyObject_GenericGetAttr, /* tp_getattro */ + + 0, /* tp_setattro */ + + 0, /* tp_as_buffer */ + + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | + + Py_TPFLAGS_BASETYPE | Py_TPFLAGS_DICT_SUBCLASS, /* tp_flags */ + + dictionary_doc, /* tp_doc */ + + dict_traverse, /* tp_traverse */ + + dict_tp_clear, /* tp_clear */ + + dict_richcompare, /* tp_richcompare */ + + 0, /* tp_weaklistoffset */ + + (getiterfunc)dict_iter, /* tp_iter */ + + 0, /* tp_iternext */ + + mapp_methods, /* tp_methods */ + + 0, /* tp_members */ + + 0, /* tp_getset */ + + 0, /* tp_base */ + + 0, /* tp_dict */ + + 0, /* tp_descr_get */ + + 0, /* tp_descr_set */ + + 0, /* tp_dictoffset */ + + dict_init, /* tp_init */ + + PyType_GenericAlloc, /* tp_alloc */ + + dict_new, /* tp_new */ + + PyObject_GC_Del, /* tp_free */ + +}; + + +/* For backward compatibility with old dictionary interface */ + + +PyObject * + +PyDict_GetItemString(PyObject *v, const char *key) + +{ + + PyObject *kv, *rv; + + kv = PyUnicode_FromString(key); + + if (kv == NULL) + + return NULL; + + rv = PyDict_GetItem(v, kv); + + Py_DECREF(kv); + + return rv; + +} + + +int + +PyDict_SetItemString(PyObject *v, const char *key, PyObject *item) + +{ + + PyObject *kv; + + int err; + + kv = PyUnicode_FromString(key); + + if (kv == NULL) + + return -1; + + PyUnicode_InternInPlace(&kv); /* XXX Should we really? */ + + err = PyDict_SetItem(v, kv, item); + + Py_DECREF(kv); + + return err; + +} + + +int + +PyDict_DelItemString(PyObject *v, const char *key) + +{ + + PyObject *kv; + + int err; + + kv = PyUnicode_FromString(key); + + if (kv == NULL) + + return -1; + + err = PyDict_DelItem(v, kv); + + Py_DECREF(kv); + + return err; + +} + + +/* Dictionary iterator types */ + + +typedef struct { + + PyObject_HEAD + + PyDictObject *di_dict; /* Set to NULL when iterator is exhausted */ + + Py_ssize_t di_used; + + Py_ssize_t di_pos; + + PyObject* di_result; /* reusable result tuple for iteritems */ + + Py_ssize_t len; + +} dictiterobject; + + +static PyObject * + +dictiter_new(PyDictObject *dict, PyTypeObject *itertype) + +{ + + dictiterobject *di; + + di = PyObject_GC_New(dictiterobject, itertype); + + if (di == NULL) + + return NULL; + + Py_INCREF(dict); + + di->di_dict = dict; + + di->di_used = dict->ma_used; + + di->di_pos = 0; + + di->len = dict->ma_used; + + if (itertype == &PyDictIterItem_Type) { + + di->di_result = PyTuple_Pack(2, Py_None, Py_None); + + if (di->di_result == NULL) { + + Py_DECREF(di); + + return NULL; + + } + + } + + else + + di->di_result = NULL; + + _PyObject_GC_TRACK(di); + + return (PyObject *)di; + +} + + +static void + +dictiter_dealloc(dictiterobject *di) + +{ + + Py_XDECREF(di->di_dict); + + Py_XDECREF(di->di_result); + + PyObject_GC_Del(di); + +} + + +static int + +dictiter_traverse(dictiterobject *di, visitproc visit, void *arg) + +{ + + Py_VISIT(di->di_dict); + + Py_VISIT(di->di_result); + + return 0; + +} + + +static PyObject * + +dictiter_len(dictiterobject *di) + +{ + + Py_ssize_t len = 0; + + if (di->di_dict != NULL && di->di_used == di->di_dict->ma_used) + + len = di->len; + + return PyLong_FromSize_t(len); + +} + + +PyDoc_STRVAR(length_hint_doc, + + "Private method returning an estimate of len(list(it))."); + + +static PyMethodDef dictiter_methods[] = { + + {"__length_hint__", (PyCFunction)dictiter_len, METH_NOARGS, + + length_hint_doc}, + + {NULL, NULL} /* sentinel */ + +}; + + +static PyObject *dictiter_iternextkey(dictiterobject *di) + +{ + + PyObject *key; + + register Py_ssize_t i, mask; + + register PyDictEntry *ep; + + PyDictObject *d = di->di_dict; + + + if (d == NULL) + + return NULL; + + assert (PyDict_Check(d)); + + + if (di->di_used != d->ma_used) { + + PyErr_SetString(PyExc_RuntimeError, + + "dictionary changed size during iteration"); + + di->di_used = -1; /* Make this state sticky */ + + return NULL; + + } + + + i = di->di_pos; + + if (i < 0) + + goto fail; + + ep = d->ma_table; + + mask = d->ma_mask; + + while (i <= mask && ep[i].me_value == NULL) + + i++; + + di->di_pos = i+1; + + if (i > mask) + + goto fail; + + di->len--; + + key = ep[i].me_key; + + Py_INCREF(key); + + return key; + + +fail: + + Py_DECREF(d); + + di->di_dict = NULL; + + return NULL; + +} + + +PyTypeObject PyDictIterKey_Type = { + + PyVarObject_HEAD_INIT(&PyType_Type, 0) + + "dict_keyiterator", /* tp_name */ + + sizeof(dictiterobject), /* tp_basicsize */ + + 0, /* tp_itemsize */ + + /* methods */ + + (destructor)dictiter_dealloc, /* tp_dealloc */ + + 0, /* tp_print */ + + 0, /* tp_getattr */ + + 0, /* tp_setattr */ + + 0, /* tp_reserved */ + + 0, /* tp_repr */ + + 0, /* tp_as_number */ + + 0, /* tp_as_sequence */ + + 0, /* tp_as_mapping */ + + 0, /* tp_hash */ + + 0, /* tp_call */ + + 0, /* tp_str */ + + PyObject_GenericGetAttr, /* tp_getattro */ + + 0, /* tp_setattro */ + + 0, /* tp_as_buffer */ + + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + + 0, /* tp_doc */ + + (traverseproc)dictiter_traverse, /* tp_traverse */ + + 0, /* tp_clear */ + + 0, /* tp_richcompare */ + + 0, /* tp_weaklistoffset */ + + PyObject_SelfIter, /* tp_iter */ + + (iternextfunc)dictiter_iternextkey, /* tp_iternext */ + + dictiter_methods, /* tp_methods */ + + 0, + +}; + + +static PyObject *dictiter_iternextvalue(dictiterobject *di) + +{ + + PyObject *value; + + register Py_ssize_t i, mask; + + register PyDictEntry *ep; + + PyDictObject *d = di->di_dict; + + + if (d == NULL) + + return NULL; + + assert (PyDict_Check(d)); + + + if (di->di_used != d->ma_used) { + + PyErr_SetString(PyExc_RuntimeError, + + "dictionary changed size during iteration"); + + di->di_used = -1; /* Make this state sticky */ + + return NULL; + + } + + + i = di->di_pos; + + mask = d->ma_mask; + + if (i < 0 || i > mask) + + goto fail; + + ep = d->ma_table; + + while ((value=ep[i].me_value) == NULL) { + + i++; + + if (i > mask) + + goto fail; + + } + + di->di_pos = i+1; + + di->len--; + + Py_INCREF(value); + + return value; + + +fail: + + Py_DECREF(d); + + di->di_dict = NULL; + + return NULL; + +} + + +PyTypeObject PyDictIterValue_Type = { + + PyVarObject_HEAD_INIT(&PyType_Type, 0) + + "dict_valueiterator", /* tp_name */ + + sizeof(dictiterobject), /* tp_basicsize */ + + 0, /* tp_itemsize */ + + /* methods */ + + (destructor)dictiter_dealloc, /* tp_dealloc */ + + 0, /* tp_print */ + + 0, /* tp_getattr */ + + 0, /* tp_setattr */ + + 0, /* tp_reserved */ + + 0, /* tp_repr */ + + 0, /* tp_as_number */ + + 0, /* tp_as_sequence */ + + 0, /* tp_as_mapping */ + + 0, /* tp_hash */ + + 0, /* tp_call */ + + 0, /* tp_str */ + + PyObject_GenericGetAttr, /* tp_getattro */ + + 0, /* tp_setattro */ + + 0, /* tp_as_buffer */ + + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + + 0, /* tp_doc */ + + (traverseproc)dictiter_traverse, /* tp_traverse */ + + 0, /* tp_clear */ + + 0, /* tp_richcompare */ + + 0, /* tp_weaklistoffset */ + + PyObject_SelfIter, /* tp_iter */ + + (iternextfunc)dictiter_iternextvalue, /* tp_iternext */ + + dictiter_methods, /* tp_methods */ + + 0, + +}; + + +static PyObject *dictiter_iternextitem(dictiterobject *di) + +{ + + PyObject *key, *value, *result = di->di_result; + + register Py_ssize_t i, mask; + + register PyDictEntry *ep; + + PyDictObject *d = di->di_dict; + + + if (d == NULL) + + return NULL; + + assert (PyDict_Check(d)); + + + if (di->di_used != d->ma_used) { + + PyErr_SetString(PyExc_RuntimeError, + + "dictionary changed size during iteration"); + + di->di_used = -1; /* Make this state sticky */ + + return NULL; + + } + + + i = di->di_pos; + + if (i < 0) + + goto fail; + + ep = d->ma_table; + + mask = d->ma_mask; + + while (i <= mask && ep[i].me_value == NULL) + + i++; + + di->di_pos = i+1; + + if (i > mask) + + goto fail; + + + if (result->ob_refcnt == 1) { + + Py_INCREF(result); + + Py_DECREF(PyTuple_GET_ITEM(result, 0)); + + Py_DECREF(PyTuple_GET_ITEM(result, 1)); + + } else { + + result = PyTuple_New(2); + + if (result == NULL) + + return NULL; + + } + + di->len--; + + key = ep[i].me_key; + + value = ep[i].me_value; + + Py_INCREF(key); + + Py_INCREF(value); + + PyTuple_SET_ITEM(result, 0, key); + + PyTuple_SET_ITEM(result, 1, value); + + return result; + + +fail: + + Py_DECREF(d); + + di->di_dict = NULL; + + return NULL; + +} + + +PyTypeObject PyDictIterItem_Type = { + + PyVarObject_HEAD_INIT(&PyType_Type, 0) + + "dict_itemiterator", /* tp_name */ + + sizeof(dictiterobject), /* tp_basicsize */ + + 0, /* tp_itemsize */ + + /* methods */ + + (destructor)dictiter_dealloc, /* tp_dealloc */ + + 0, /* tp_print */ + + 0, /* tp_getattr */ + + 0, /* tp_setattr */ + + 0, /* tp_reserved */ + + 0, /* tp_repr */ + + 0, /* tp_as_number */ + + 0, /* tp_as_sequence */ + + 0, /* tp_as_mapping */ + + 0, /* tp_hash */ + + 0, /* tp_call */ + + 0, /* tp_str */ + + PyObject_GenericGetAttr, /* tp_getattro */ + + 0, /* tp_setattro */ + + 0, /* tp_as_buffer */ + + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + + 0, /* tp_doc */ + + (traverseproc)dictiter_traverse, /* tp_traverse */ + + 0, /* tp_clear */ + + 0, /* tp_richcompare */ + + 0, /* tp_weaklistoffset */ + + PyObject_SelfIter, /* tp_iter */ + + (iternextfunc)dictiter_iternextitem, /* tp_iternext */ + + dictiter_methods, /* tp_methods */ + + 0, + +}; + + + +/***********************************************/ + +/* View objects for keys(), items(), values(). */ + +/***********************************************/ + + +/* The instance lay-out is the same for all three; but the type differs. */ + + +typedef struct { + + PyObject_HEAD + + PyDictObject *dv_dict; + +} dictviewobject; + + + +static void + +dictview_dealloc(dictviewobject *dv) + +{ + + Py_XDECREF(dv->dv_dict); + + PyObject_GC_Del(dv); + +} + + +static int + +dictview_traverse(dictviewobject *dv, visitproc visit, void *arg) + +{ + + Py_VISIT(dv->dv_dict); + + return 0; + +} + + +static Py_ssize_t + +dictview_len(dictviewobject *dv) + +{ + + Py_ssize_t len = 0; + + if (dv->dv_dict != NULL) + + len = dv->dv_dict->ma_used; + + return len; + +} + + +static PyObject * + +dictview_new(PyObject *dict, PyTypeObject *type) + +{ + + dictviewobject *dv; + + if (dict == NULL) { + + PyErr_BadInternalCall(); + + return NULL; + + } + + if (!PyDict_Check(dict)) { + + /* XXX Get rid of this restriction later */ + + PyErr_Format(PyExc_TypeError, + + "%s() requires a dict argument, not '%s'", + + type->tp_name, dict->ob_type->tp_name); + + return NULL; + + } + + dv = PyObject_GC_New(dictviewobject, type); + + if (dv == NULL) + + return NULL; + + Py_INCREF(dict); + + dv->dv_dict = (PyDictObject *)dict; + + _PyObject_GC_TRACK(dv); + + return (PyObject *)dv; + +} + + +/* TODO(guido): The views objects are not complete: + + + * support more set operations + + * support arbitrary mappings? + + - either these should be static or exported in dictobject.h + + - if public then they should probably be in builtins + +*/ + + +/* Return 1 if self is a subset of other, iterating over self; + + 0 if not; -1 if an error occurred. */ + +static int + +all_contained_in(PyObject *self, PyObject *other) + +{ + + PyObject *iter = PyObject_GetIter(self); + + int ok = 1; + + + if (iter == NULL) + + return -1; + + for (;;) { + + PyObject *next = PyIter_Next(iter); + + if (next == NULL) { + + if (PyErr_Occurred()) + + ok = -1; + + break; + + } + + ok = PySequence_Contains(other, next); + + Py_DECREF(next); + + if (ok <= 0) + + break; + + } + + Py_DECREF(iter); + + return ok; + +} + + +static PyObject * + +dictview_richcompare(PyObject *self, PyObject *other, int op) + +{ + + Py_ssize_t len_self, len_other; + + int ok; + + PyObject *result; + + + assert(self != NULL); + + assert(PyDictViewSet_Check(self)); + + assert(other != NULL); + + + if (!PyAnySet_Check(other) && !PyDictViewSet_Check(other)) + + Py_RETURN_NOTIMPLEMENTED; + + + len_self = PyObject_Size(self); + + if (len_self < 0) + + return NULL; + + len_other = PyObject_Size(other); + + if (len_other < 0) + + return NULL; + + + ok = 0; + + switch(op) { + + + case Py_NE: + + case Py_EQ: + + if (len_self == len_other) + + ok = all_contained_in(self, other); + + if (op == Py_NE && ok >= 0) + + ok = !ok; + + break; + + + case Py_LT: + + if (len_self < len_other) + + ok = all_contained_in(self, other); + + break; + + + case Py_LE: + + if (len_self <= len_other) + + ok = all_contained_in(self, other); + + break; + + + case Py_GT: + + if (len_self > len_other) + + ok = all_contained_in(other, self); + + break; + + + case Py_GE: + + if (len_self >= len_other) + + ok = all_contained_in(other, self); + + break; + + + } + + if (ok < 0) + + return NULL; + + result = ok ? Py_True : Py_False; + + Py_INCREF(result); + + return result; + +} + + +static PyObject * + +dictview_repr(dictviewobject *dv) + +{ + + PyObject *seq; + + PyObject *result; + + + seq = PySequence_List((PyObject *)dv); + + if (seq == NULL) + + return NULL; + + + result = PyUnicode_FromFormat("%s(%R)", Py_TYPE(dv)->tp_name, seq); + + Py_DECREF(seq); + + return result; + +} + + +/*** dict_keys ***/ + + +static PyObject * + +dictkeys_iter(dictviewobject *dv) + +{ + + if (dv->dv_dict == NULL) { + + Py_RETURN_NONE; + + } + + return dictiter_new(dv->dv_dict, &PyDictIterKey_Type); + +} + + +static int + +dictkeys_contains(dictviewobject *dv, PyObject *obj) + +{ + + if (dv->dv_dict == NULL) + + return 0; + + return PyDict_Contains((PyObject *)dv->dv_dict, obj); + +} + + +static PySequenceMethods dictkeys_as_sequence = { + + (lenfunc)dictview_len, /* sq_length */ + + 0, /* sq_concat */ + + 0, /* sq_repeat */ + + 0, /* sq_item */ + + 0, /* sq_slice */ + + 0, /* sq_ass_item */ + + 0, /* sq_ass_slice */ + + (objobjproc)dictkeys_contains, /* sq_contains */ + +}; + + +static PyObject* + +dictviews_sub(PyObject* self, PyObject *other) + +{ + + PyObject *result = PySet_New(self); + + PyObject *tmp; + + _Py_IDENTIFIER(difference_update); + + + if (result == NULL) + + return NULL; + + + tmp = _PyObject_CallMethodId(result, &PyId_difference_update, "O", other); + + if (tmp == NULL) { + + Py_DECREF(result); + + return NULL; + + } + + + Py_DECREF(tmp); + + return result; + +} + + +static PyObject* + +dictviews_and(PyObject* self, PyObject *other) + +{ + + PyObject *result = PySet_New(self); + + PyObject *tmp; + + _Py_IDENTIFIER(intersection_update); + + + if (result == NULL) + + return NULL; + + + tmp = _PyObject_CallMethodId(result, &PyId_intersection_update, "O", other); + + if (tmp == NULL) { + + Py_DECREF(result); + + return NULL; + + } + + + Py_DECREF(tmp); + + return result; + +} + + +static PyObject* + +dictviews_or(PyObject* self, PyObject *other) + +{ + + PyObject *result = PySet_New(self); + + PyObject *tmp; + + _Py_IDENTIFIER(update); + + + if (result == NULL) + + return NULL; + + + tmp = _PyObject_CallMethodId(result, &PyId_update, "O", other); + + if (tmp == NULL) { + + Py_DECREF(result); + + return NULL; + + } + + + Py_DECREF(tmp); + + return result; + +} + + +static PyObject* + +dictviews_xor(PyObject* self, PyObject *other) + +{ + + PyObject *result = PySet_New(self); + + PyObject *tmp; + + _Py_IDENTIFIER(symmetric_difference_update); + + + if (result == NULL) + + return NULL; + + + tmp = _PyObject_CallMethodId(result, &PyId_symmetric_difference_update, "O", + + other); + + if (tmp == NULL) { + + Py_DECREF(result); + + return NULL; + + } + + + Py_DECREF(tmp); + + return result; + +} + + +static PyNumberMethods dictviews_as_number = { + + 0, /*nb_add*/ + + (binaryfunc)dictviews_sub, /*nb_subtract*/ + + 0, /*nb_multiply*/ + + 0, /*nb_remainder*/ + + 0, /*nb_divmod*/ + + 0, /*nb_power*/ + + 0, /*nb_negative*/ + + 0, /*nb_positive*/ + + 0, /*nb_absolute*/ + + 0, /*nb_bool*/ + + 0, /*nb_invert*/ + + 0, /*nb_lshift*/ + + 0, /*nb_rshift*/ + + (binaryfunc)dictviews_and, /*nb_and*/ + + (binaryfunc)dictviews_xor, /*nb_xor*/ + + (binaryfunc)dictviews_or, /*nb_or*/ + +}; + + +static PyObject* + +dictviews_isdisjoint(PyObject *self, PyObject *other) + +{ + + PyObject *it; + + PyObject *item = NULL; + + + if (self == other) { + + if (dictview_len((dictviewobject *)self) == 0) + + Py_RETURN_TRUE; + + else + + Py_RETURN_FALSE; + + } + + + /* Iterate over the shorter object (only if other is a set, + + * because PySequence_Contains may be expensive otherwise): */ + + if (PyAnySet_Check(other) || PyDictViewSet_Check(other)) { + + Py_ssize_t len_self = dictview_len((dictviewobject *)self); + + Py_ssize_t len_other = PyObject_Size(other); + + if (len_other == -1) + + return NULL; + + + if ((len_other > len_self)) { + + PyObject *tmp = other; + + other = self; + + self = tmp; + + } + + } + + + it = PyObject_GetIter(other); + + if (it == NULL) + + return NULL; + + + while ((item = PyIter_Next(it)) != NULL) { + + int contains = PySequence_Contains(self, item); + + Py_DECREF(item); + + if (contains == -1) { + + Py_DECREF(it); + + return NULL; + + } + + + if (contains) { + + Py_DECREF(it); + + Py_RETURN_FALSE; + + } + + } + + Py_DECREF(it); + + if (PyErr_Occurred()) + + return NULL; /* PyIter_Next raised an exception. */ + + Py_RETURN_TRUE; + +} + + +PyDoc_STRVAR(isdisjoint_doc, + +"Return True if the view and the given iterable have a null intersection."); + + +static PyMethodDef dictkeys_methods[] = { + + {"isdisjoint", (PyCFunction)dictviews_isdisjoint, METH_O, + + isdisjoint_doc}, + + {NULL, NULL} /* sentinel */ + +}; + + +PyTypeObject PyDictKeys_Type = { + + PyVarObject_HEAD_INIT(&PyType_Type, 0) + + "dict_keys", /* tp_name */ + + sizeof(dictviewobject), /* tp_basicsize */ + + 0, /* tp_itemsize */ + + /* methods */ + + (destructor)dictview_dealloc, /* tp_dealloc */ + + 0, /* tp_print */ + + 0, /* tp_getattr */ + + 0, /* tp_setattr */ + + 0, /* tp_reserved */ + + (reprfunc)dictview_repr, /* tp_repr */ + + &dictviews_as_number, /* tp_as_number */ + + &dictkeys_as_sequence, /* tp_as_sequence */ + + 0, /* tp_as_mapping */ + + 0, /* tp_hash */ + + 0, /* tp_call */ + + 0, /* tp_str */ + + PyObject_GenericGetAttr, /* tp_getattro */ + + 0, /* tp_setattro */ + + 0, /* tp_as_buffer */ + + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + + 0, /* tp_doc */ + + (traverseproc)dictview_traverse, /* tp_traverse */ + + 0, /* tp_clear */ + + dictview_richcompare, /* tp_richcompare */ + + 0, /* tp_weaklistoffset */ + + (getiterfunc)dictkeys_iter, /* tp_iter */ + + 0, /* tp_iternext */ + + dictkeys_methods, /* tp_methods */ + + 0, + +}; + + +static PyObject * + +dictkeys_new(PyObject *dict) + +{ + + return dictview_new(dict, &PyDictKeys_Type); + +} + + +/*** dict_items ***/ + + +static PyObject * + +dictitems_iter(dictviewobject *dv) + +{ + + if (dv->dv_dict == NULL) { + + Py_RETURN_NONE; + + } + + return dictiter_new(dv->dv_dict, &PyDictIterItem_Type); + +} + + +static int + +dictitems_contains(dictviewobject *dv, PyObject *obj) + +{ + + PyObject *key, *value, *found; + + if (dv->dv_dict == NULL) + + return 0; + + if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 2) + + return 0; + + key = PyTuple_GET_ITEM(obj, 0); + + value = PyTuple_GET_ITEM(obj, 1); + + found = PyDict_GetItem((PyObject *)dv->dv_dict, key); + + if (found == NULL) { + + if (PyErr_Occurred()) + + return -1; + + return 0; + + } + + return PyObject_RichCompareBool(value, found, Py_EQ); + +} + + +static PySequenceMethods dictitems_as_sequence = { + + (lenfunc)dictview_len, /* sq_length */ + + 0, /* sq_concat */ + + 0, /* sq_repeat */ + + 0, /* sq_item */ + + 0, /* sq_slice */ + + 0, /* sq_ass_item */ + + 0, /* sq_ass_slice */ + + (objobjproc)dictitems_contains, /* sq_contains */ + +}; + + +static PyMethodDef dictitems_methods[] = { + + {"isdisjoint", (PyCFunction)dictviews_isdisjoint, METH_O, + + isdisjoint_doc}, + + {NULL, NULL} /* sentinel */ + +}; + + +PyTypeObject PyDictItems_Type = { + + PyVarObject_HEAD_INIT(&PyType_Type, 0) + + "dict_items", /* tp_name */ + + sizeof(dictviewobject), /* tp_basicsize */ + + 0, /* tp_itemsize */ + + /* methods */ + + (destructor)dictview_dealloc, /* tp_dealloc */ + + 0, /* tp_print */ + + 0, /* tp_getattr */ + + 0, /* tp_setattr */ + + 0, /* tp_reserved */ + + (reprfunc)dictview_repr, /* tp_repr */ + + &dictviews_as_number, /* tp_as_number */ + + &dictitems_as_sequence, /* tp_as_sequence */ + + 0, /* tp_as_mapping */ + + 0, /* tp_hash */ + + 0, /* tp_call */ + + 0, /* tp_str */ + + PyObject_GenericGetAttr, /* tp_getattro */ + + 0, /* tp_setattro */ + + 0, /* tp_as_buffer */ + + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + + 0, /* tp_doc */ + + (traverseproc)dictview_traverse, /* tp_traverse */ + + 0, /* tp_clear */ + + dictview_richcompare, /* tp_richcompare */ + + 0, /* tp_weaklistoffset */ + + (getiterfunc)dictitems_iter, /* tp_iter */ + + 0, /* tp_iternext */ + + dictitems_methods, /* tp_methods */ + + 0, + +}; + + +static PyObject * + +dictitems_new(PyObject *dict) + +{ + + return dictview_new(dict, &PyDictItems_Type); + +} + + +/*** dict_values ***/ + + +static PyObject * + +dictvalues_iter(dictviewobject *dv) + +{ + + if (dv->dv_dict == NULL) { + + Py_RETURN_NONE; + + } + + return dictiter_new(dv->dv_dict, &PyDictIterValue_Type); + +} + + +static PySequenceMethods dictvalues_as_sequence = { + + (lenfunc)dictview_len, /* sq_length */ + + 0, /* sq_concat */ + + 0, /* sq_repeat */ + + 0, /* sq_item */ + + 0, /* sq_slice */ + + 0, /* sq_ass_item */ + + 0, /* sq_ass_slice */ + + (objobjproc)0, /* sq_contains */ + +}; + + +static PyMethodDef dictvalues_methods[] = { + + {NULL, NULL} /* sentinel */ + +}; + + +PyTypeObject PyDictValues_Type = { + + PyVarObject_HEAD_INIT(&PyType_Type, 0) + + "dict_values", /* tp_name */ + + sizeof(dictviewobject), /* tp_basicsize */ + + 0, /* tp_itemsize */ + + /* methods */ + + (destructor)dictview_dealloc, /* tp_dealloc */ + + 0, /* tp_print */ + + 0, /* tp_getattr */ + + 0, /* tp_setattr */ + + 0, /* tp_reserved */ + + (reprfunc)dictview_repr, /* tp_repr */ + + 0, /* tp_as_number */ + + &dictvalues_as_sequence, /* tp_as_sequence */ + + 0, /* tp_as_mapping */ + + 0, /* tp_hash */ + + 0, /* tp_call */ + + 0, /* tp_str */ + + PyObject_GenericGetAttr, /* tp_getattro */ + + 0, /* tp_setattro */ + + 0, /* tp_as_buffer */ + + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ + + 0, /* tp_doc */ + + (traverseproc)dictview_traverse, /* tp_traverse */ + + 0, /* tp_clear */ + + 0, /* tp_richcompare */ + + 0, /* tp_weaklistoffset */ + + (getiterfunc)dictvalues_iter, /* tp_iter */ + + 0, /* tp_iternext */ + + dictvalues_methods, /* tp_methods */ + + 0, + +}; + + +static PyObject * + +dictvalues_new(PyObject *dict) + +{ + + return dictview_new(dict, &PyDictValues_Type); + +} + diff --git a/DS/rmq.cpp b/DS/rmq.cpp new file mode 100644 index 00000000..01acd5bc --- /dev/null +++ b/DS/rmq.cpp @@ -0,0 +1,76 @@ +//itisalways42 +#include + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; +const int LOGN = 20; +int rmq[LOGN][N],A[N],P[LOGN],X[N]; + +int query(int l, int r) +{ + int d = r-l+1; + int len = P[X[d]]; + int ret = rmq[X[d]][r]; + ret = min(ret, rmq[X[d]][l+len-1]); + return ret; +} + +int main() +{ + P[0] = 1; X[1] = 0; + for(int i=1; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; +int in[N],out[N]; + +void dfs0(int u, int p=-1) +{ + in[u] = 0; + for(auto v:G[u]) + if(v!=p) + dfs0(v,u), in[u] = max(in[u],in[v]+1); +} + +void dfs(int u, int p=-1) +{ + int mx[2]; mx[0] = mx[1] = -1; + for(auto v:G[u]) + { + if(v==p) continue; + if(in[v] > mx[0]) mx[1] = mx[0], mx[0] = in[v]; + else if(in[v] > mx[1]) mx[1] = in[v]; + } + for(auto v:G[u]) + { + if(v==p) continue; + int tmp=0; + if(mx[1] != -1) tmp = 2+(in[v]==mx[0]?mx[1]:mx[0]); + out[v] = max(out[u]+1,tmp); + dfs(v,u); + } +} + +int dsu[N],rank[N]; +int find(int u) +{ + if(dsu[u] == u) return u; + return dsu[u] = find(dsu[u]); +} +bool update(int u, int v) +{ + u = find(u); v = find(v); + if(u==v) return false; + //if(rank[u] > rank[v]) swap(u,v); + dsu[u] = v; + return true; + //rank[v] = max(rank[v],rank[u]+1); +} + +int main() +{ + int n; si(n); + for(int i=1; i<=n; i++) dsu[i] = i, rank[i] = 1; + for(int i=0; i + +using namespace std; + +typedef pair II; +typedef vector< II > VII; +typedef vector VI; +typedef vector< VI > VVI; +typedef long long int LL; + +#define PB push_back +#define MP make_pair +#define F first +#define S second +#define SZ(a) (int)(a.size()) +#define ALL(a) a.begin(),a.end() +#define SET(a,b) memset(a,b,sizeof(a)) + +#define si(n) scanf("%d",&n) +#define dout(n) printf("%d\n",n) +#define sll(n) scanf("%lld",&n) +#define lldout(n) printf("%lld\n",n) +#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL) + +#define TRACE + +#ifdef TRACE +#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) +template +void __f(const char* name, Arg1&& arg1){ + cerr << name << " : " << arg1 << std::endl; +} +template +void __f(const char* names, Arg1&& arg1, Args&&... args){ + const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); +} +#else +#define trace(...) +#endif + +//FILE *fin = freopen("in","r",stdin); +//FILE *fout = freopen("out","w",stdout); + +const int N = int(1e5)+10; + +VI G[N]; +int in[N],out[N]; + +bool cmp(int a, int b) +{ + return a v; + v.size(); + v.push_back(10); + v.pop_back(); + v.resize(20); + v[i]; + + sort(v.begin(),v.end(),cmp); + lower_bound(v.begin(),v.end(),val) - v.begin(); + upper_bound(v.begin(),v.end(),val) - v.begin(); + binary_search(v.begin(),v.end(),val); + + pair p; + p.first; + p.second; + + vector< pair > vp; + vp[i]; + + priority_queue pq; + pq.push(10); + pq.top(); + pq.pop(); + priority_queue, greater > min_heap; + + set S; + multiset MS; + S.insert(10); + //S.erase(10); + S.find(9); + *S.begin(); + + map M; + M[5] = 10; + *M.find(5); + pair x = *M.begin();// x.first = 5, x.second = 10 + + unordered_set H; + H.insert(10); // O(1) + H.erase(10); + H.find(10); + + unordered_map HM; + HM[5] = 10; + + + if(S.find(v) != S.end()); + + string s = "hello"; + s.push_back('0'); + s += "hello"; + + vector VS; + VS[i][j]; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + return 0; +} diff --git a/DS/test.txt b/DS/test.txt new file mode 100644 index 00000000..51e91431 --- /dev/null +++ b/DS/test.txt @@ -0,0 +1,249814 @@ +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO diff --git a/DS/test1.c b/DS/test1.c new file mode 100644 index 00000000..e2c6896b --- /dev/null +++ b/DS/test1.c @@ -0,0 +1,250545 @@ +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO diff --git a/DS/test2.c b/DS/test2.c new file mode 100644 index 00000000..e2c6896b --- /dev/null +++ b/DS/test2.c @@ -0,0 +1,250545 @@ +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +YES +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO +NO diff --git a/SMAI/01_RandomVariables.pdf b/SMAI/01_RandomVariables.pdf new file mode 100644 index 00000000..6e6f0ff6 Binary files /dev/null and b/SMAI/01_RandomVariables.pdf differ diff --git a/SMAI/Random_Varaible_notes.md b/SMAI/Random_Varaible_notes.md new file mode 100644 index 00000000..20cff6c7 --- /dev/null +++ b/SMAI/Random_Varaible_notes.md @@ -0,0 +1,23 @@ +# Random Variables + Variable with a random value from a given set. + +# Terms + Population + Sample + Sampling/Trial + +# Assumptions + +**Independence** from previous trials +**Identical** to previous trials + +# Discreate & Continous Random Variable + +## Probality Distribuition function / Probality Mass function + +## Mean(µ) + +## Variance(σ^2) + + + diff --git a/SMAI/SMAI_hw_01/01.jpg b/SMAI/SMAI_hw_01/01.jpg new file mode 100644 index 00000000..2d3196b2 Binary files /dev/null and b/SMAI/SMAI_hw_01/01.jpg differ diff --git a/SMAI/SMAI_hw_01/02.jpg b/SMAI/SMAI_hw_01/02.jpg new file mode 100644 index 00000000..8fb54a8b Binary files /dev/null and b/SMAI/SMAI_hw_01/02.jpg differ diff --git a/SMAI/SMAI_hw_01/03.jpg b/SMAI/SMAI_hw_01/03.jpg new file mode 100644 index 00000000..4678e867 Binary files /dev/null and b/SMAI/SMAI_hw_01/03.jpg differ diff --git a/SMAI/SMAI_hw_01/04.jpg b/SMAI/SMAI_hw_01/04.jpg new file mode 100644 index 00000000..fadd289c Binary files /dev/null and b/SMAI/SMAI_hw_01/04.jpg differ diff --git a/SMAI/SMAI_hw_01/06.png b/SMAI/SMAI_hw_01/06.png new file mode 100644 index 00000000..b1b923c1 Binary files /dev/null and b/SMAI/SMAI_hw_01/06.png differ diff --git a/SMAI/SMAI_hw_01/06_07.md b/SMAI/SMAI_hw_01/06_07.md new file mode 100644 index 00000000..d8184eb7 --- /dev/null +++ b/SMAI/SMAI_hw_01/06_07.md @@ -0,0 +1,10 @@ +# Inverse CDF +- The plot clearly shows 2 functions for each graph + + 1. Original function(Given) + 2. Computed random function(** Using histogram of inverse cdf produced using a uniform distribuition) + +# Random Distribuition + We will notice it is taking shape of a gaussian function or normal distribuiton. + This is because these functions is calculated using the inverse cdf + of a normal distribution's histogram or (p(x)). \ No newline at end of file diff --git a/SMAI/SMAI_hw_01/5.jpeg b/SMAI/SMAI_hw_01/5.jpeg new file mode 100644 index 00000000..e0a984a5 Binary files /dev/null and b/SMAI/SMAI_hw_01/5.jpeg differ diff --git a/SMAI/SMAI_hw_01/6.jpeg b/SMAI/SMAI_hw_01/6.jpeg new file mode 100644 index 00000000..b72c66a3 Binary files /dev/null and b/SMAI/SMAI_hw_01/6.jpeg differ diff --git a/SMAI/SMAI_hw_01/inv_cdf.png b/SMAI/SMAI_hw_01/inv_cdf.png new file mode 100644 index 00000000..ee5cc943 Binary files /dev/null and b/SMAI/SMAI_hw_01/inv_cdf.png differ diff --git a/SMAI/SMAI_hw_01/inv_inference.png b/SMAI/SMAI_hw_01/inv_inference.png new file mode 100644 index 00000000..9f500e27 Binary files /dev/null and b/SMAI/SMAI_hw_01/inv_inference.png differ diff --git a/SMAI/SMAI_hw_01/inverse_cdfs.py b/SMAI/SMAI_hw_01/inverse_cdfs.py new file mode 100644 index 00000000..94ab9e82 --- /dev/null +++ b/SMAI/SMAI_hw_01/inverse_cdfs.py @@ -0,0 +1,77 @@ +import numpy as np +import matplotlib.pyplot as plt +import math + +# Uniform variable +U = np.random.random(10000) + +# Normal distribuition : https://www.johndcook.com/blog/normal_cdf_inverse/ +def normal_dist_inv(p): + if p < 0.5: + # F^-1(p) = - G^-1(p) + return -rational_approximation( np.sqrt(-2.0*np.log(p))) + else: + return rational_approximation( np.sqrt(-2.0*np.log(1.0 - p))) + +def exp_dist_inv(p): + return -np.log(1 - p) + +def rational_approximation(t): + + # Abramowitz and Stegun formula 26.2.23. + # The absolute value of the error should be less than 4.5 e-4. + c = [2.515517, 0.802853, 0.010328] + d = [1.432788, 0.189269, 0.001308] + numerator = (c[2]*t + c[1])*t + c[0] + denominator = ((d[2]*t + d[1])*t + d[0])*t + 1.0 + return t - numerator / denominator + +def normal_dist(p): + return np.exp(-(p**2)/8)/2*np.sqrt(2*np.pi) +def main(): + print(np.linspace(-10,10,20)) + x = normal_dist(np.linspace(-10,10,20))*3000 + # x = [normal_dist(p)*3500 for p in np.linspace(-10,10,20)] + print(x) + y = np.zeros_like(U) + for i in range(len(U)): + y[i] = normal_dist_inv(U[i]) + + f1 = plt.figure() + ax1 = f1.add_subplot(311) + ax1.set_title("Normal Density") + ax1.plot(np.linspace(-10,10,20),x) + ax1.hist(y, bins=range(-15,15,1)) + + u = 1.5*np.exp(-1.5*np.linspace(-5,5,20)) + v = np.zeros_like(U) + for i in range(len(U)): + v[i] = exp_dist_inv(U[i]) + + ax1 = f1.add_subplot(312) + ax1.set_title("Exponential Density") + ax1.plot(u*2.4) + ax1.hist(v, bins=range(-1,15,1)) + + y = np.zeros_like(U) + for i in range(len(U)): + y[i] = normal_dist_inv(U[i]) + + ax1 = f1.add_subplot(313) + ax1.set_title("Rayleigh Density") + ax1.plot(np.linspace(-10,10,20),x) + ax1.hist(y, bins=range(-15,15,1)) + # f3 = plt.figure() + # ax3 = f3.add_subplot(111) + # ax3.plot(u) + + # f4 = plt.figure() + # ax4 = f4.add_subplot(111) + + plt.show() + +if __name__ == "__main__": + main() + + + diff --git a/SMAI/SMAI_hw_01/p01.pdf b/SMAI/SMAI_hw_01/p01.pdf new file mode 100644 index 00000000..85ec01de Binary files /dev/null and b/SMAI/SMAI_hw_01/p01.pdf differ diff --git a/SMAI/SMAI_hw_01/p02.pdf b/SMAI/SMAI_hw_01/p02.pdf new file mode 100644 index 00000000..392194bf Binary files /dev/null and b/SMAI/SMAI_hw_01/p02.pdf differ diff --git a/SMAI/SMAI_hw_01/p03.pdf b/SMAI/SMAI_hw_01/p03.pdf new file mode 100644 index 00000000..f563ea5b Binary files /dev/null and b/SMAI/SMAI_hw_01/p03.pdf differ diff --git a/SMAI/SMAI_hw_01/p04.pdf b/SMAI/SMAI_hw_01/p04.pdf new file mode 100644 index 00000000..b657efc9 Binary files /dev/null and b/SMAI/SMAI_hw_01/p04.pdf differ diff --git a/SMAI/SMAI_hw_01/random_func_inference.png b/SMAI/SMAI_hw_01/random_func_inference.png new file mode 100644 index 00000000..a945be05 Binary files /dev/null and b/SMAI/SMAI_hw_01/random_func_inference.png differ diff --git a/SMAI/SMAI_hw_01/random_function.py b/SMAI/SMAI_hw_01/random_function.py new file mode 100644 index 00000000..09eaee54 --- /dev/null +++ b/SMAI/SMAI_hw_01/random_function.py @@ -0,0 +1,11 @@ +import numpy as np +import matplotlib.pyplot as plt + + +r = np.sum(2*(np.random.random((500,100)) - 0.5),axis=0) +plt.hist(r, bins=range(-30,30,1)) +plt.title("Unifrom Distribuition of random function in numpy") +plt.xlabel("Sum of random numbers") +plt.ylabel("Number of students") + +plt.show() \ No newline at end of file diff --git a/SMAI/SMAI_hw_02/1.jpeg b/SMAI/SMAI_hw_02/1.jpeg new file mode 100644 index 00000000..d26af710 Binary files /dev/null and b/SMAI/SMAI_hw_02/1.jpeg differ diff --git a/SMAI/SMAI_hw_02/2.jpeg b/SMAI/SMAI_hw_02/2.jpeg new file mode 100644 index 00000000..428dc62c Binary files /dev/null and b/SMAI/SMAI_hw_02/2.jpeg differ diff --git a/SMAI/SMAI_hw_02/3.jpeg b/SMAI/SMAI_hw_02/3.jpeg new file mode 100644 index 00000000..1505d998 Binary files /dev/null and b/SMAI/SMAI_hw_02/3.jpeg differ diff --git a/SMAI/SMAI_hw_02/4.jpeg b/SMAI/SMAI_hw_02/4.jpeg new file mode 100644 index 00000000..7d439c19 Binary files /dev/null and b/SMAI/SMAI_hw_02/4.jpeg differ diff --git a/SMAI/SMAI_hw_02/5.jpeg b/SMAI/SMAI_hw_02/5.jpeg new file mode 100644 index 00000000..f122196e Binary files /dev/null and b/SMAI/SMAI_hw_02/5.jpeg differ diff --git a/SMAI/SMAI_hw_02/__pycache__/lin_reg.cpython-35.pyc b/SMAI/SMAI_hw_02/__pycache__/lin_reg.cpython-35.pyc new file mode 100644 index 00000000..5f67fe01 Binary files /dev/null and b/SMAI/SMAI_hw_02/__pycache__/lin_reg.cpython-35.pyc differ diff --git a/SMAI/SMAI_hw_02/lin_reg.py b/SMAI/SMAI_hw_02/lin_reg.py new file mode 100644 index 00000000..741cfce5 --- /dev/null +++ b/SMAI/SMAI_hw_02/lin_reg.py @@ -0,0 +1,32 @@ +import matplotlib.pyplot as plt +import numpy as np + +x = np.array([0,1,2,3,4]) +y = np.array([1,2,3,4,3]) + +# Append one to each x +x = np.vstack((x,np.ones((1,x.shape[0])))) +# Parameters to optimize +w = np.random.random((1,2)) + +prev_loss = 0 +lr = 1e-3 +while True: + L = np.sum( (y - w.dot(x))**2) + dw = (x.dot((w.dot(x) - y).T)).T + w -= lr*dw + + if np.abs(L - prev_loss) < 1e-5: + break + else: + print("Loss:",L) + prev_loss = L + +print("a & b:",w) + +plt.plot(x[0,:],w.dot(x)[0]) +plt.scatter(x[0,:],y) +plt.title("Linear Regression") +plt.xlabel("x") +plt.ylabel("y") +plt.show() diff --git a/SMAI/SMAI_hw_02/org_reg.png b/SMAI/SMAI_hw_02/org_reg.png new file mode 100644 index 00000000..e470bdbb Binary files /dev/null and b/SMAI/SMAI_hw_02/org_reg.png differ diff --git a/SMAI/SMAI_hw_02/org_reg.py b/SMAI/SMAI_hw_02/org_reg.py new file mode 100644 index 00000000..aefb5281 --- /dev/null +++ b/SMAI/SMAI_hw_02/org_reg.py @@ -0,0 +1,33 @@ +import matplotlib.pyplot as plt +import numpy as np + +x = np.array([0,1,2,3,4]) +y = np.array([1,2,3,4,3]) +n = x.shape[0] +# Append one to each x +# x = np.vstack((x,np.ones((1,x.shape[0])))) +# Parameters to optimize +w = np.random.random((1,2)) + +prev_loss = 0 +lr = 1e-3 + +A = 0.5*((np.sum(y**2) - n*np.mean(y)**2) - (np.sum(x**2) - n*np.mean(x)**2))/(n*np.mean(x)*np.mean(y) - np.sum(x*y)) + + +a = -A - np.sqrt(A**2 +1) +b = np.mean(y) - a*np.mean(x) +L = np.sum((y -(a*x + b))**2)/(1 + a**2) +print("Loss:",L) +a = -A + np.sqrt(A**2 +1) +b = np.mean(y) - a*np.mean(x) +L = np.sum((y -(a*x + b))**2)/(1 + a**2) +print("Loss:",L) +print("Hence:a:{} b:{}".format(a,b)) + +plt.scatter(x,y) +plt.plot(x,a*x + b) +plt.title("Minimum Orthogonal Distance") +plt.xlabel("x") +plt.ylabel("y") +plt.show() \ No newline at end of file diff --git a/SMAI/yes b/SMAI/yes new file mode 100644 index 00000000..5c914cd5 --- /dev/null +++ b/SMAI/yes @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAuc0iydAQaw1DC+/6w27gJ0zfKUMjXSSr/0VH/wwZIFFtLqC1 +TIaG4t2QolJUwUVYemVMJS88kHXVjHWqjV9/vlzyC6ShgepevR9OXusMuYW4H7EC +htZ9qIg9BylmZ5isr0gl347GjwTsch35/iDzQadS6jbKFZd5ky2cVWimAAnwyCxM +ByGUMwtYpIBQVthbk6HPhUomdvrA79Iev4zMAWiMxbX9jyQBCoEqsiSFwrsMOgm7 +dSFCbl4XHt2QFhwKv7jgFgr2mC7ESIb0VHUtALmlGCJb+tbpU0yBexDy0SElrD2K +hRt7M2Lb1S8a6g9EYrU9RUma2QHhh4u8QrXOUQIDAQABAoIBAGRDxPAvLYz3fSTl +/eaU4LWUkCDOMDlFXuPEWVPTDYQZLNgqtWt0dTnb4v8VetNJPrPeEjdGxGIYlILV +xJHB5UevFJcf4mAfP7zDNiGWqik7dd70QK7O9MSLsJM6zh49j4KPZpC7lX78YzQ5 +5Pw0f9EAIIhvxKHeOicoR+L3NA10YzJ7aHhvmZ8tDHATfhhrdZeGT2ie30ImnM7j +R7w8T0UpPHN1L5ywX5lKN/O3lzSJGGZbbNWVQ1FyC5K3gUBG8ypSKlade11Z0d9U +kGXjbs8z7RM85MbDYAAfgq66KdrZeJHjo8xCoPMN0KXILU2P0nOKlB00mjtwKzvO +qJXwG6ECgYEA8Zo8NIEfvSbtnMcbqEwtIZMZFthm8X2jvA+7qfqidzNIW5g2+7JF +8rVZLSMRNRaK6ylZ1/YRBwWS2y8InJz0enJ5DeBHkbordhhT/EAC4hdo516Tf68F +yLXMHqHLjfc2YaId3U+xVZpO4TdAk4Z/MWlquo8JSmC75GCET3Owfi0CgYEAxN+g +W/GZ4QQ4op95i7XhFOPTlzKGPD+kXRpX376eEa2mVykrieB1NczEnC+SoqCEaJYf +4CFdy1Ybw2imjUt997BHL2xFaenrR2eV7C0lT/lK+iic3B/6mVgWQzbf2Mb08ot9 +hRuKc4CBNiKyLhwq7AUyxUAn2hqlhNjlfNhWyzUCgYAuVuDZSTLnOsI0YdQiMYou +eGJFiXglNW3kMjhSX+otZr6oIsfY+taDuNjD2YgBYLOAa0v6Kg4WBLGoLJtAPrJ9 +kds6GBxiDQ0s93mUVkq3RrouNmuf/9fiKUxfS7UZI6NgkpGb0x82RgR/GfPe19sp +hQidg7XKeEdRhFmcS5o8eQKBgH1qDAimVyWN/9oxB0fl/FXHcKIv8G1vCXC5+GKz +VpTib0W1F2RE1cYJBPKOJ7Zr1Q2fHP01pD+FQjhwcTEvdzaTWDWwnmODPXuGVG5Y +sB1LLOVBe/OKd6S6BayZx22cCKx+Cd8ClWdQ5H8tCR7wmLMz+IzJetmpAeooFcE7 +O8dFAoGAFDR7+JZENoiW17+llcK3VBHQtSCsFFclCEHW0qIk6EAMeYIemK8dJFO9 +1agzf8osgZTcYrUii6c/2wiNivhbRYxLjVWblAhYVA5lIobBa7z2FkTusrxsjGx+ +DRTbpEwfTS82mXySoJ7MDH8BEJy9LgwJuvcXDBA1RLGevOuMt2w= +-----END RSA PRIVATE KEY----- diff --git a/SMAI/yes.pub b/SMAI/yes.pub new file mode 100644 index 00000000..7588a912 --- /dev/null +++ b/SMAI/yes.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5zSLJ0BBrDUML7/rDbuAnTN8pQyNdJKv/RUf/DBkgUW0uoLVMhobi3ZCiUlTBRVh6ZUwlLzyQddWMdaqNX3++XPILpKGB6l69H05e6wy5hbgfsQKG1n2oiD0HKWZnmKyvSCXfjsaPBOxyHfn+IPNBp1LqNsoVl3mTLZxVaKYACfDILEwHIZQzC1ikgFBW2FuToc+FSiZ2+sDv0h6/jMwBaIzFtf2PJAEKgSqyJIXCuww6Cbt1IUJuXhce3ZAWHAq/uOAWCvaYLsRIhvRUdS0AuaUYIlv61ulTTIF7EPLRISWsPYqFG3szYtvVLxrqD0RitT1FSZrZAeGHi7xCtc5R shubh@kaneki diff --git a/apt_list b/apt_list deleted file mode 100644 index 0698f0c1..00000000 --- a/apt_list +++ /dev/null @@ -1,2647 +0,0 @@ -a11y-profile-manager-indicator install -account-plugin-facebook install -account-plugin-flickr install -account-plugin-google install -accountsservice install -acl install -acpi-support install -acpid install -activity-log-manager install -adduser install -adium-theme-ubuntu install -adwaita-icon-theme install -aglfn install -aisleriot install -alsa-base install -alsa-utils install -anacron install -apg install -app-install-data install -app-install-data-partner install -apparmor install -appmenu-qt:amd64 install -appmenu-qt5 install -apport install -apport-gtk install -apport-symptoms install -appstream install -apt install -apt-transport-https install -apt-utils install -aptdaemon install -aptdaemon-data install -apturl install -apturl-common install -aspell install -aspell-en install -asymptote install -asymptote-doc install -at-spi2-core install -autoconf install -automake install -autopoint install -autotools-dev install -avahi-autoipd install -avahi-daemon install -avahi-utils install -bamfdaemon install -baobab install -base-files install -base-passwd install -bash install -bash-completion install -bbswitch-dkms install -bc install -bind9-host install -binutils install -blender install -blender-data install -blt install -bluez install -bluez-cups install -bluez-obexd install -branding-ubuntu install -brltty install -bsdmainutils install -bsdutils install -build-essential install -busybox-initramfs install -busybox-static install -bzip2 install -bzip2-doc install -ca-certificates install -ca-certificates-java install -checkbox-converged install -checkbox-gui install -checkinstall install -cheese install -cheese-common install -chktex install -cm-super install -cm-super-minimal install -cmake install -cmake-data install -colord install -colord-data install -command-not-found install -command-not-found-data install -compiz install -compiz-core install -compiz-gnome install -compiz-plugins-default:amd64 install -console-setup install -console-setup-linux install -context install -context-modules install -coreutils install -cpio install -cpp install -cpp-4.9 install -cpp-5 install -cracklib-runtime install -crda install -cron install -cuda install -cuda-8-0 install -cuda-9-0 install -cuda-command-line-tools-8-0 install -cuda-command-line-tools-9-0 install -cuda-core-8-0 install -cuda-core-9-0 install -cuda-cublas-8-0 install -cuda-cublas-9-0 install -cuda-cublas-dev-8-0 install -cuda-cublas-dev-9-0 install -cuda-cudart-8-0 install -cuda-cudart-9-0 install -cuda-cudart-dev-8-0 install -cuda-cudart-dev-9-0 install -cuda-cufft-8-0 install -cuda-cufft-9-0 install -cuda-cufft-dev-8-0 install -cuda-cufft-dev-9-0 install -cuda-curand-8-0 install -cuda-curand-9-0 install -cuda-curand-dev-8-0 install -cuda-curand-dev-9-0 install -cuda-cusolver-8-0 install -cuda-cusolver-9-0 install -cuda-cusolver-dev-8-0 install -cuda-cusolver-dev-9-0 install -cuda-cusparse-8-0 install -cuda-cusparse-9-0 install -cuda-cusparse-dev-8-0 install -cuda-cusparse-dev-9-0 install -cuda-demo-suite-8-0 install -cuda-demo-suite-9-0 install -cuda-documentation-8-0 install -cuda-documentation-9-0 install -cuda-driver-dev-8-0 install -cuda-driver-dev-9-0 install -cuda-drivers install -cuda-libraries-9-0 install -cuda-libraries-dev-9-0 install -cuda-license-8-0 install -cuda-license-9-0 install -cuda-misc-headers-8-0 install -cuda-misc-headers-9-0 install -cuda-npp-8-0 install -cuda-npp-9-0 install -cuda-npp-dev-8-0 install -cuda-npp-dev-9-0 install -cuda-nvgraph-8-0 install -cuda-nvgraph-9-0 install -cuda-nvgraph-dev-8-0 install -cuda-nvgraph-dev-9-0 install -cuda-nvml-dev-8-0 install -cuda-nvml-dev-9-0 install -cuda-nvrtc-8-0 install -cuda-nvrtc-9-0 install -cuda-nvrtc-dev-8-0 install -cuda-nvrtc-dev-9-0 install -cuda-repo-ubuntu1604-8-0-local-ga2 install -cuda-repo-ubuntu1604-9-0-local install -cuda-runtime-8-0 install -cuda-runtime-9-0 install -cuda-samples-8-0 install -cuda-samples-9-0 install -cuda-toolkit-8-0 install -cuda-toolkit-9-0 install -cuda-visual-tools-8-0 install -cuda-visual-tools-9-0 install -cups install -cups-browsed install -cups-bsd install -cups-client install -cups-common install -cups-core-drivers install -cups-daemon install -cups-filters install -cups-filters-core-drivers install -cups-pk-helper install -cups-ppdc install -cups-server-common install -curl install -dash install -dbus install -dbus-x11 install -dc install -dconf-cli install -dconf-gsettings-backend:amd64 install -dconf-service install -dconf-tools deinstall -debconf install -debconf-i18n install -debhelper install -debianutils install -default-jre install -default-jre-headless install -deja-dup install -desktop-file-utils install -dh-autoreconf install -dh-python install -dh-strip-nondeterminism install -dictionaries-common install -diffstat install -diffutils install -dirmngr install -distro-info-data install -dkms install -dmidecode install -dmz-cursor-theme install -dns-root-data install -dnsmasq-base install -dnsutils install -doc-base install -dosfstools install -dpkg install -dpkg-dev install -dvidvi install -dvipng install -e2fslibs:amd64 install -e2fsprogs install -ed install -efibootmgr install -eject install -emacsen-common install -enchant install -eog install -espeak-data:amd64 install -ethtool install -evince install -evince-common install -evolution-data-server install -evolution-data-server-common install -evolution-data-server-online-accounts install -example-content install -fakeroot install -feynmf install -file install -file-roller install -findutils install -firefox install -firefox-locale-en install -fontconfig install -fontconfig-config install -fonts-cabin install -fonts-comfortaa install -fonts-crosextra-caladea install -fonts-crosextra-carlito install -fonts-dejavu install -fonts-dejavu-core install -fonts-dejavu-extra install -fonts-ebgaramond install -fonts-ebgaramond-extra install -fonts-font-awesome install -fonts-freefont-otf install -fonts-freefont-ttf install -fonts-gfs-artemisia install -fonts-gfs-baskerville install -fonts-gfs-bodoni-classic install -fonts-gfs-complutum install -fonts-gfs-didot install -fonts-gfs-didot-classic install -fonts-gfs-gazis install -fonts-gfs-neohellenic install -fonts-gfs-olga install -fonts-gfs-porson install -fonts-gfs-solomos install -fonts-gfs-theokritos install -fonts-guru install -fonts-guru-extra install -fonts-hosny-amiri install -fonts-ipaexfont-gothic install -fonts-ipaexfont-mincho install -fonts-ipafont-gothic install -fonts-ipafont-mincho install -fonts-junicode install -fonts-kacst install -fonts-kacst-one install -fonts-khmeros-core install -fonts-lao install -fonts-lato install -fonts-liberation install -fonts-linuxlibertine install -fonts-lklug-sinhala install -fonts-lmodern install -fonts-lobster install -fonts-lobstertwo install -fonts-lohit-guru install -fonts-nanum install -fonts-noto-cjk install -fonts-oflb-asana-math install -fonts-opensymbol install -fonts-roboto-hinted install -fonts-sil-abyssinica install -fonts-sil-gentium install -fonts-sil-gentium-basic install -fonts-sil-gentiumplus install -fonts-sil-padauk install -fonts-stix install -fonts-symbola install -fonts-takao-pgothic install -fonts-texgyre install -fonts-thai-tlwg install -fonts-tibetan-machine install -fonts-tlwg-garuda install -fonts-tlwg-garuda-ttf install -fonts-tlwg-kinnari install -fonts-tlwg-kinnari-ttf install -fonts-tlwg-laksaman install -fonts-tlwg-laksaman-ttf install -fonts-tlwg-loma install -fonts-tlwg-loma-ttf install -fonts-tlwg-mono install -fonts-tlwg-mono-ttf install -fonts-tlwg-norasi install -fonts-tlwg-norasi-ttf install -fonts-tlwg-purisa install -fonts-tlwg-purisa-ttf install -fonts-tlwg-sawasdee install -fonts-tlwg-sawasdee-ttf install -fonts-tlwg-typewriter install -fonts-tlwg-typewriter-ttf install -fonts-tlwg-typist install -fonts-tlwg-typist-ttf install -fonts-tlwg-typo install -fonts-tlwg-typo-ttf install -fonts-tlwg-umpush install -fonts-tlwg-umpush-ttf install -fonts-tlwg-waree install -fonts-tlwg-waree-ttf install -foomatic-db-compressed-ppds install -fragmaster install -freeglut3:amd64 install -freeglut3-dev:amd64 install -friendly-recovery install -ftp install -fuse install -fwupd install -fwupdate install -fwupdate-signed install -g++ install -g++-4.9 install -g++-5 install -gcc install -gcc-4.9 install -gcc-4.9-base:amd64 install -gcc-5 install -gcc-5-base:amd64 install -gcc-6-base:amd64 install -gconf-defaults-service install -gconf-editor install -gconf-service install -gconf-service-backend install -gconf2 install -gconf2-common install -gcr install -gdb install -gdbserver install -gdisk install -gedit install -gedit-common install -genisoimage install -geoclue install -geoclue-ubuntu-geoip install -geoip-database install -geoip-database-extra install -gettext install -gettext-base install -gfortran install -gfortran-5 install -ghostscript install -ghostscript-x install -gir1.2-accounts-1.0:amd64 install -gir1.2-appindicator3-0.1 install -gir1.2-atk-1.0 install -gir1.2-atspi-2.0 install -gir1.2-dbusmenu-glib-0.4:amd64 install -gir1.2-dee-1.0 install -gir1.2-freedesktop:amd64 install -gir1.2-gdata-0.0:amd64 install -gir1.2-gdkpixbuf-2.0:amd64 install -gir1.2-glib-2.0:amd64 install -gir1.2-gnomekeyring-1.0 install -gir1.2-goa-1.0:amd64 install -gir1.2-gst-plugins-base-1.0 install -gir1.2-gstreamer-1.0 install -gir1.2-gtk-3.0:amd64 install -gir1.2-gtksource-3.0:amd64 install -gir1.2-gtop-2.0:amd64 install -gir1.2-gudev-1.0:amd64 install -gir1.2-ibus-1.0:amd64 install -gir1.2-javascriptcoregtk-4.0:amd64 install -gir1.2-json-1.0:amd64 install -gir1.2-notify-0.7 install -gir1.2-packagekitglib-1.0 install -gir1.2-pango-1.0:amd64 install -gir1.2-peas-1.0:amd64 install -gir1.2-rb-3.0:amd64 install -gir1.2-secret-1:amd64 install -gir1.2-signon-1.0 install -gir1.2-soup-2.4 install -gir1.2-totem-1.0:amd64 install -gir1.2-totem-plparser-1.0:amd64 install -gir1.2-udisks-2.0:amd64 install -gir1.2-unity-5.0:amd64 install -gir1.2-vte-2.91:amd64 install -gir1.2-webkit2-4.0:amd64 install -gir1.2-wnck-3.0:amd64 install -git install -git-core install -git-doc install -git-gui install -git-man install -gitk install -gkbd-capplet install -gksu install -glib-networking:amd64 install -glib-networking-common install -glib-networking-services install -gnome-accessibility-themes install -gnome-bluetooth install -gnome-calculator install -gnome-calendar install -gnome-desktop3-data install -gnome-disk-utility install -gnome-font-viewer install -gnome-keyring install -gnome-mahjongg install -gnome-menus install -gnome-mines install -gnome-orca deinstall -gnome-power-manager install -gnome-screensaver install -gnome-screenshot install -gnome-session-bin install -gnome-session-canberra install -gnome-session-common install -gnome-settings-daemon-schemas install -gnome-software install -gnome-software-common install -gnome-sudoku install -gnome-system-log install -gnome-system-monitor install -gnome-terminal install -gnome-terminal-data install -gnome-user-guide install -gnome-user-share install -gnome-video-effects install -gnupg install -gnupg-agent install -gnupg2 install -gnuplot install -gnuplot-data install -gnuplot-tex install -gnuplot-x11 install -gnuplot5-data install -gnuplot5-qt install -google-chrome-stable install -gparted install -gpgv install -grep install -grilo-plugins-0.2-base:amd64 install -groff-base install -grub-common install -grub-efi-amd64 install -grub-efi-amd64-bin install -grub-efi-amd64-signed install -grub2-common install -gsettings-desktop-schemas install -gsettings-ubuntu-schemas install -gsfonts install -gstreamer1.0-alsa:amd64 install -gstreamer1.0-clutter-3.0 install -gstreamer1.0-libav:amd64 install -gstreamer1.0-plugins-base:amd64 install -gstreamer1.0-plugins-base-apps install -gstreamer1.0-plugins-good:amd64 install -gstreamer1.0-plugins-ugly:amd64 install -gstreamer1.0-plugins-ugly-amr:amd64 install -gstreamer1.0-pulseaudio:amd64 install -gstreamer1.0-tools install -gstreamer1.0-x:amd64 install -gtk2-engines-murrine:amd64 install -gucharmap install -guile-2.0-libs:amd64 install -gvfs:amd64 install -gvfs-backends install -gvfs-bin install -gvfs-common install -gvfs-daemons install -gvfs-fuse install -gvfs-libs:amd64 install -gyp install -gzip install -hardening-includes install -hardinfo install -haveged install -hdf5-helpers install -hdparm install -hicolor-icon-theme install -hostapd install -hostname install -hplip install -hplip-data install -htop install -hud install -humanity-icon-theme install -hunspell-en-us install -hwdata install -hyphen-en-us install -i965-va-driver:amd64 install -ibus install -ibus-gtk:amd64 install -ibus-gtk3:amd64 install -ibus-table install -icu-devtools install -ifupdown install -im-config install -imagemagick install -imagemagick-6.q16 install -imagemagick-common install -indicator-application install -indicator-appmenu install -indicator-bluetooth install -indicator-datetime install -indicator-keyboard install -indicator-messages install -indicator-multiload install -indicator-power install -indicator-printers install -indicator-session install -indicator-sound install -info install -init install -init-system-helpers install -initramfs-tools install -initramfs-tools-bin install -initramfs-tools-core install -initscripts install -inputattach install -insserv install -install-info install -intel-gpu-tools install -intltool-debian install -ippusbxd install -iproute2 install -iptables install -iputils-arping install -iputils-ping install -iputils-tracepath install -ipython install -ipython3 install -irqbalance install -isc-dhcp-client install -isc-dhcp-common install -iso-codes install -iw install -java-common install -javascript-common install -jayatana install -kbd install -kerneloops-daemon install -keyboard-configuration install -klibc-utils install -kmod install -krb5-locales install -lacheck install -language-pack-en install -language-pack-en-base install -language-pack-gnome-en install -language-pack-gnome-en-base install -language-selector-common install -language-selector-gnome install -laptop-detect install -latex-cjk-all install -latex-cjk-chinese install -latex-cjk-chinese-arphic-bkai00mp install -latex-cjk-chinese-arphic-bsmi00lp install -latex-cjk-chinese-arphic-gbsn00lp install -latex-cjk-chinese-arphic-gkai00mp install -latex-cjk-common install -latex-cjk-japanese install -latex-cjk-japanese-wadalab install -latex-cjk-korean install -latex-cjk-thai install -latexdiff install -latexmk install -lcdf-typetools install -leafpad install -less install -lib32gcc1 install -liba11y-profile-manager-0.1-0:amd64 install -liba11y-profile-manager-data install -liba52-0.7.4:amd64 install -libaa1:amd64 install -libaacs0:amd64 install -libabw-0.1-1v5:amd64 install -libaccount-plugin-1.0-0:amd64 install -libaccount-plugin-generic-oauth install -libaccount-plugin-google install -libaccounts-glib0:amd64 install -libaccounts-qt5-1:amd64 install -libaccountsservice0:amd64 install -libacl1:amd64 install -libaec-dev:amd64 install -libaec0:amd64 install -libaio1:amd64 install -libalgorithm-diff-perl install -libalgorithm-diff-xs-perl install -libalgorithm-merge-perl install -libandroid-properties1 install -libao-common install -libao-dev:amd64 install -libao4:amd64 install -libapparmor-perl install -libapparmor1:amd64 install -libappindicator1 install -libappindicator3-1 install -libappstream-glib8:amd64 install -libappstream3:amd64 install -libapt-inst2.0:amd64 install -libapt-pkg-perl install -libapt-pkg5.0:amd64 install -libarchive-zip-perl install -libarchive13:amd64 install -libaribb24-0:amd64 install -libart-2.0-2:amd64 install -libasan1:amd64 install -libasan2:amd64 install -libasn1-8-heimdal:amd64 install -libasound2:amd64 install -libasound2-data install -libasound2-plugins:amd64 install -libaspell15:amd64 install -libasprintf-dev:amd64 install -libasprintf0v5:amd64 install -libass5:amd64 install -libassuan0:amd64 install -libasyncns0:amd64 install -libatasmart4:amd64 install -libatk-adaptor:amd64 install -libatk-bridge2.0-0:amd64 install -libatk1.0-0:amd64 install -libatk1.0-data install -libatkmm-1.6-1v5:amd64 install -libatm1:amd64 install -libatomic1:amd64 install -libatspi2.0-0:amd64 install -libattr1:amd64 install -libaudio2:amd64 install -libaudit-common install -libaudit1:amd64 install -libauthen-sasl-perl install -libavahi-client3:amd64 install -libavahi-common-data:amd64 install -libavahi-common3:amd64 install -libavahi-core7:amd64 install -libavahi-glib1:amd64 install -libavahi-ui-gtk3-0:amd64 install -libavc1394-0:amd64 install -libavcodec-ffmpeg56:amd64 install -libavcodec57:amd64 install -libavdevice-ffmpeg56:amd64 install -libavfilter-ffmpeg5:amd64 install -libavformat-ffmpeg56:amd64 install -libavformat57:amd64 install -libavresample-ffmpeg2:amd64 install -libavutil-ffmpeg54:amd64 install -libavutil55:amd64 install -libbabeltrace-ctf1:amd64 install -libbabeltrace1:amd64 install -libbamf3-2:amd64 install -libbasicusageenvironment1:amd64 install -libbdplus0:amd64 install -libbind9-140:amd64 install -libblas-common install -libblas-dev install -libblas3 install -libblkid1:amd64 install -libbluetooth3:amd64 install -libbluray1:amd64 install -libboost-all-dev install -libboost-atomic-dev:amd64 install -libboost-atomic1.58-dev:amd64 install -libboost-atomic1.58.0:amd64 install -libboost-chrono-dev:amd64 install -libboost-chrono1.58-dev:amd64 install -libboost-chrono1.58.0:amd64 install -libboost-context-dev:amd64 install -libboost-context1.58-dev:amd64 install -libboost-context1.58.0:amd64 install -libboost-coroutine-dev:amd64 install -libboost-coroutine1.58-dev:amd64 install -libboost-coroutine1.58.0:amd64 install -libboost-date-time-dev:amd64 install -libboost-date-time1.58-dev:amd64 install -libboost-date-time1.58.0:amd64 install -libboost-dev:amd64 install -libboost-exception-dev:amd64 install -libboost-exception1.58-dev:amd64 install -libboost-filesystem-dev:amd64 install -libboost-filesystem1.58-dev:amd64 install -libboost-filesystem1.58.0:amd64 install -libboost-graph-dev:amd64 install -libboost-graph-parallel-dev install -libboost-graph-parallel1.58-dev install -libboost-graph-parallel1.58.0 install -libboost-graph1.58-dev:amd64 install -libboost-graph1.58.0:amd64 install -libboost-iostreams-dev:amd64 install -libboost-iostreams1.58-dev:amd64 install -libboost-iostreams1.58.0:amd64 install -libboost-locale-dev:amd64 install -libboost-locale1.58-dev:amd64 install -libboost-locale1.58.0:amd64 install -libboost-log-dev install -libboost-log1.58-dev install -libboost-log1.58.0 install -libboost-math-dev:amd64 install -libboost-math1.58-dev:amd64 install -libboost-math1.58.0:amd64 install -libboost-mpi-dev install -libboost-mpi-python-dev install -libboost-mpi-python1.58-dev install -libboost-mpi-python1.58.0 install -libboost-mpi1.58-dev install -libboost-mpi1.58.0 install -libboost-program-options-dev:amd64 install -libboost-program-options1.58-dev:amd64 install -libboost-program-options1.58.0:amd64 install -libboost-python-dev install -libboost-python1.58-dev install -libboost-python1.58.0 install -libboost-random-dev:amd64 install -libboost-random1.58-dev:amd64 install -libboost-random1.58.0:amd64 install -libboost-regex-dev:amd64 install -libboost-regex1.58-dev:amd64 install -libboost-regex1.58.0:amd64 install -libboost-serialization-dev:amd64 install -libboost-serialization1.58-dev:amd64 install -libboost-serialization1.58.0:amd64 install -libboost-signals-dev:amd64 install -libboost-signals1.58-dev:amd64 install -libboost-signals1.58.0:amd64 install -libboost-system-dev:amd64 install -libboost-system1.58-dev:amd64 install -libboost-system1.58.0:amd64 install -libboost-test-dev:amd64 install -libboost-test1.58-dev:amd64 install -libboost-test1.58.0:amd64 install -libboost-thread-dev:amd64 install -libboost-thread1.58-dev:amd64 install -libboost-thread1.58.0:amd64 install -libboost-timer-dev:amd64 install -libboost-timer1.58-dev:amd64 install -libboost-timer1.58.0:amd64 install -libboost-tools-dev install -libboost-wave-dev:amd64 install -libboost-wave1.58-dev:amd64 install -libboost-wave1.58.0:amd64 install -libboost1.58-dev:amd64 install -libboost1.58-tools-dev install -libbrlapi0.6:amd64 install -libbs2b0:amd64 install -libbsd0:amd64 install -libbz2-1.0:amd64 install -libbz2-dev:amd64 install -libc-ares2:amd64 install -libc-bin install -libc-dev-bin install -libc6:amd64 install -libc6-dbg:amd64 install -libc6-dev:amd64 install -libc6-i386 install -libcaca0:amd64 install -libcairo-gobject2:amd64 install -libcairo-perl install -libcairo2:amd64 install -libcairomm-1.0-1v5:amd64 install -libcamel-1.2-54:amd64 install -libcanberra-gtk-module:amd64 install -libcanberra-gtk0:amd64 install -libcanberra-gtk3-0:amd64 install -libcanberra-gtk3-module:amd64 install -libcanberra-pulse:amd64 install -libcanberra0:amd64 install -libcap-ng0:amd64 install -libcap2:amd64 install -libcap2-bin install -libcapnp-0.5.3:amd64 install -libcc1-0:amd64 install -libcddb2 install -libcdio-cdda1:amd64 install -libcdio-paranoia1:amd64 install -libcdio13:amd64 install -libcdparanoia0:amd64 install -libcdr-0.1-1:amd64 install -libcgi-fast-perl install -libcgi-pm-perl install -libcgmanager0:amd64 install -libcheese-gtk25:amd64 install -libcheese8:amd64 install -libchromaprint0:amd64 install -libcilkrts5:amd64 install -libclass-accessor-perl install -libclone-perl install -libclucene-contribs1v5:amd64 install -libclucene-core1v5:amd64 install -libclutter-1.0-0:amd64 install -libclutter-1.0-common install -libclutter-gst-3.0-0:amd64 install -libclutter-gtk-1.0-0:amd64 install -libcmis-0.5-5v5:amd64 install -libcogl-common install -libcogl-pango20:amd64 install -libcogl-path20:amd64 install -libcogl20:amd64 install -libcolamd2.9.1:amd64 install -libcolord2:amd64 install -libcolorhug2:amd64 install -libcolumbus1-common install -libcolumbus1v5:amd64 install -libcomerr2:amd64 install -libcompizconfig0:amd64 install -libcrack2:amd64 install -libcroco3:amd64 install -libcryptsetup4:amd64 install -libcrystalhd3:amd64 install -libcuda1-384 install -libcudnn5 install -libcudnn7 install -libcups2:amd64 install -libcupscgi1:amd64 install -libcupsfilters1:amd64 install -libcupsimage2:amd64 install -libcupsmime1:amd64 install -libcupsppdc1:amd64 install -libcupti-dev:amd64 install -libcupti-doc install -libcupti7.5:amd64 install -libcurl3:amd64 install -libcurl3-gnutls:amd64 install -libcurl4-openssl-dev:amd64 install -libdaemon0:amd64 install -libdata-alias-perl install -libdatrie1:amd64 install -libdb5.3:amd64 install -libdbus-1-3:amd64 install -libdbus-glib-1-2:amd64 install -libdbusmenu-glib4:amd64 install -libdbusmenu-gtk3-4:amd64 install -libdbusmenu-gtk4:amd64 install -libdbusmenu-qt2:amd64 install -libdbusmenu-qt5:amd64 install -libdc1394-22:amd64 install -libdca0:amd64 install -libdconf1:amd64 install -libdebconfclient0:amd64 install -libdecoration0:amd64 install -libdee-1.0-4:amd64 install -libdevmapper1.02.1:amd64 install -libdfu1:amd64 install -libdigest-hmac-perl install -libdjvulibre-text install -libdjvulibre21:amd64 install -libdmapsharing-3.0-2:amd64 install -libdmx-dev:amd64 install -libdmx1:amd64 install -libdns-export162 install -libdns162:amd64 install -libdotconf0:amd64 install -libdouble-conversion1v5:amd64 install -libdpkg-perl install -libdrm-amdgpu1:amd64 install -libdrm-common install -libdrm-dev:amd64 install -libdrm-intel1:amd64 install -libdrm-nouveau2:amd64 install -libdrm-radeon1:amd64 install -libdrm2:amd64 install -libdv4:amd64 install -libdvbpsi10:amd64 install -libdvd-pkg install -libdvdcss-dev:amd64 install -libdvdcss2:amd64 install -libdvdnav4:amd64 install -libdvdread4:amd64 install -libe-book-0.1-1:amd64 install -libebackend-1.2-10:amd64 install -libebml4v5:amd64 install -libebook-1.2-16:amd64 install -libebook-contacts-1.2-2:amd64 install -libecal-1.2-19:amd64 install -libedata-book-1.2-25:amd64 install -libedata-cal-1.2-28:amd64 install -libedataserver-1.2-21:amd64 install -libedataserverui-1.2-1:amd64 install -libedit2:amd64 install -libefivar0:amd64 install -libegl1-mesa:amd64 install -libelf1:amd64 install -libemail-valid-perl install -libenchant1c2a:amd64 install -libencode-locale-perl install -libeot0:amd64 install -libepoxy0:amd64 install -liberror-perl install -libespeak1:amd64 install -libestr0 install -libetonyek-0.1-1:amd64 install -libevdev2:amd64 install -libevdocument3-4:amd64 install -libevent-2.0-5:amd64 install -libevent-core-2.0-5:amd64 install -libevview3-3:amd64 install -libexempi3:amd64 install -libexif-dev install -libexif12:amd64 install -libexiv2-14:amd64 install -libexpat1:amd64 install -libexpat1-dev:amd64 install -libexporter-tiny-perl install -libexttextcat-2.0-0:amd64 install -libexttextcat-data install -libfaad2:amd64 install -libfakeroot:amd64 install -libfcgi-perl install -libfcitx-config4:amd64 install -libfcitx-gclient0:amd64 install -libfcitx-utils0:amd64 install -libfdisk1:amd64 install -libffi6:amd64 install -libfftw3-bin install -libfftw3-dev:amd64 install -libfftw3-double3:amd64 install -libfftw3-long3:amd64 install -libfftw3-quad3:amd64 install -libfftw3-single3:amd64 install -libfile-basedir-perl install -libfile-copy-recursive-perl install -libfile-desktopentry-perl install -libfile-fcntllock-perl install -libfile-homedir-perl install -libfile-listing-perl install -libfile-mimeinfo-perl install -libfile-stripnondeterminism-perl install -libfile-which-perl install -libflac8:amd64 install -libflite1:amd64 install -libfont-afm-perl install -libfontconfig1:amd64 install -libfontconfig1-dev:amd64 install -libfontembed1:amd64 install -libfontenc-dev:amd64 install -libfontenc1:amd64 install -libframe6:amd64 install -libfreehand-0.1-1:amd64 install -libfreerdp-cache1.1:amd64 install -libfreerdp-client1.1:amd64 install -libfreerdp-codec1.1:amd64 install -libfreerdp-common1.1.0:amd64 install -libfreerdp-core1.1:amd64 install -libfreerdp-crypto1.1:amd64 install -libfreerdp-gdi1.1:amd64 install -libfreerdp-locale1.1:amd64 install -libfreerdp-plugins-standard:amd64 install -libfreerdp-primitives1.1:amd64 install -libfreerdp-utils1.1:amd64 install -libfreetype6:amd64 install -libfreetype6-dev:amd64 install -libfribidi0:amd64 install -libfs-dev:amd64 install -libfs6:amd64 install -libfuse2:amd64 install -libfwup0:amd64 install -libfwupd1:amd64 install -libgail-3-0:amd64 install -libgail-common:amd64 install -libgail18:amd64 install -libgbm1:amd64 install -libgc1c2:amd64 install -libgcab-1.0-0:amd64 install -libgcc-4.9-dev:amd64 install -libgcc-5-dev:amd64 install -libgcc1:amd64 install -libgck-1-0:amd64 install -libgconf-2-4:amd64 install -libgcr-3-common install -libgcr-base-3-1:amd64 install -libgcr-ui-3-1:amd64 install -libgcrypt20:amd64 install -libgd3:amd64 install -libgdata-common install -libgdata22:amd64 install -libgdbm3:amd64 install -libgdk-pixbuf2.0-0:amd64 install -libgdk-pixbuf2.0-common install -libgee-0.8-2:amd64 install -libgeis1:amd64 install -libgeoclue0:amd64 install -libgeocode-glib0:amd64 install -libgeoip1:amd64 install -libgeonames0:amd64 install -libgettextpo-dev:amd64 install -libgettextpo0:amd64 install -libgexiv2-2:amd64 install -libgfortran-4.9-dev:amd64 install -libgfortran-5-dev:amd64 install -libgfortran3:amd64 install -libgif7:amd64 install -libgirepository-1.0-1:amd64 install -libgksu2-0 install -libgl1-mesa-dev:amd64 install -libgl1-mesa-dri:amd64 install -libgl1-mesa-glx:amd64 install -libglade2-0:amd64 install -libglapi-mesa:amd64 install -libgles2-mesa:amd64 install -libglew-dev:amd64 install -libglew1.13:amd64 install -libglewmx1.13:amd64 install -libglfw3:amd64 install -libglfw3-dev:amd64 install -libglib-perl install -libglib2.0-0:amd64 install -libglib2.0-bin install -libglib2.0-data install -libglibmm-2.4-1v5:amd64 install -libglm-dev install -libglu1-mesa:amd64 install -libglu1-mesa-dev:amd64 install -libgme0:amd64 install -libgmime-2.6-0:amd64 install -libgmp10:amd64 install -libgnome-bluetooth13:amd64 install -libgnome-desktop-3-12:amd64 install -libgnome-keyring-common install -libgnome-keyring0:amd64 install -libgnome-menu-3-0:amd64 install -libgnomekbd-common install -libgnomekbd8:amd64 install -libgnutls-openssl27:amd64 install -libgnutls30:amd64 install -libgoa-1.0-0b:amd64 install -libgoa-1.0-common install -libgom-1.0-0:amd64 install -libgom-1.0-common install -libgomp1:amd64 install -libgpg-error0:amd64 install -libgpgme11:amd64 install -libgphoto2-6:amd64 install -libgphoto2-l10n install -libgphoto2-port12:amd64 install -libgpm2:amd64 install -libgpod-common install -libgpod4:amd64 install -libgrail6 install -libgraphicsmagick-q16-3 install -libgraphicsmagick1-dev install -libgraphite2-3:amd64 install -libgrilo-0.2-1:amd64 install -libgroupsock8:amd64 install -libgs9:amd64 install -libgs9-common install -libgsettings-qt1:amd64 install -libgsl2:amd64 install -libgsm1:amd64 install -libgssapi-krb5-2:amd64 install -libgssapi3-heimdal:amd64 install -libgstreamer-plugins-base1.0-0:amd64 install -libgstreamer-plugins-good1.0-0:amd64 install -libgstreamer1.0-0:amd64 install -libgtk-3-0:amd64 install -libgtk-3-bin install -libgtk-3-common install -libgtk2-perl install -libgtk2.0-0:amd64 install -libgtk2.0-bin install -libgtk2.0-common install -libgtkglext1:amd64 install -libgtkmm-2.4-1v5:amd64 install -libgtkmm-3.0-1v5:amd64 install -libgtksourceview-3.0-1:amd64 install -libgtksourceview-3.0-common install -libgtkspell3-3-0:amd64 install -libgtop-2.0-10:amd64 install -libgtop2-common install -libgucharmap-2-90-7:amd64 install -libgudev-1.0-0:amd64 install -libgusb2:amd64 install -libgutenprint2 install -libgweather-3-6:amd64 install -libgweather-common install -libgxps2:amd64 install -libhardware2 install -libharfbuzz-icu0:amd64 install -libharfbuzz0b:amd64 install -libhavege1:amd64 install -libhcrypto4-heimdal:amd64 install -libhdf5-10:amd64 install -libhdf5-cpp-11:amd64 install -libhdf5-dev install -libheimbase1-heimdal:amd64 install -libheimntlm0-heimdal:amd64 install -libhogweed4:amd64 install -libhpmud0:amd64 install -libhtml-form-perl install -libhtml-format-perl install -libhtml-parser-perl install -libhtml-tagset-perl install -libhtml-template-perl install -libhtml-tree-perl install -libhttp-cookies-perl install -libhttp-daemon-perl install -libhttp-date-perl install -libhttp-message-perl install -libhttp-negotiate-perl install -libhud2:amd64 install -libhunspell-1.3-0:amd64 install -libhwloc-dev:amd64 install -libhwloc-plugins install -libhwloc5:amd64 install -libhx509-5-heimdal:amd64 install -libhybris install -libhybris-common1 install -libhyphen0:amd64 install -libibus-1.0-5:amd64 install -libibverbs-dev install -libibverbs1 install -libical1a:amd64 install -libice-dev:amd64 install -libice6:amd64 install -libicu-dev:amd64 install -libicu55:amd64 install -libid3tag0 install -libidn11:amd64 install -libido3-0.1-0:amd64 install -libiec61883-0:amd64 install -libieee1284-3:amd64 install -libijs-0.35:amd64 install -libilmbase12:amd64 install -libimobiledevice6:amd64 install -libindicator3-7 install -libindicator7 install -libinput-bin install -libinput10:amd64 install -libio-html-perl install -libio-pty-perl install -libio-socket-inet6-perl install -libio-socket-ssl-perl install -libio-string-perl install -libipc-run-perl install -libipc-system-simple-perl install -libisc-export160 install -libisc160:amd64 install -libisccc140:amd64 install -libisccfg140:amd64 install -libisl15:amd64 install -libitm1:amd64 install -libiw30:amd64 install -libjack-jackd2-0:amd64 install -libjansson4:amd64 install -libjasper-dev install -libjasper1:amd64 install -libjavascriptcoregtk-4.0-18:amd64 install -libjbig-dev:amd64 install -libjbig0:amd64 install -libjbig2dec0 install -libjemalloc1 install -libjpeg-dev:amd64 install -libjpeg-turbo8:amd64 install -libjpeg-turbo8-dev:amd64 install -libjpeg8:amd64 install -libjpeg8-dev:amd64 install -libjs-inherits install -libjs-jquery install -libjs-node-uuid install -libjs-openlayers install -libjs-underscore install -libjson-c2:amd64 install -libjson-glib-1.0-0:amd64 install -libjson-glib-1.0-common install -libjsoncpp1:amd64 install -libk5crypto3:amd64 install -libkate1:amd64 install -libkeyutils1:amd64 install -libklibc install -libkmod2:amd64 install -libkpathsea6:amd64 install -libkrb5-26-heimdal:amd64 install -libkrb5-3:amd64 install -libkrb5support0:amd64 install -libksba8:amd64 install -liblangtag-common install -liblangtag1:amd64 install -liblcms2-2:amd64 install -liblcms2-dev:amd64 install -liblcms2-utils install -libldap-2.4-2:amd64 install -libldb1:amd64 install -liblightdm-gobject-1-0:amd64 install -liblinear3:amd64 install -liblirc-client0:amd64 install -liblircclient0 install -liblist-moreutils-perl install -liblivemedia50:amd64 install -libllvm3.8:amd64 install -libllvm5.0:amd64 install -liblocale-gettext-perl install -liblouis-data install -liblouis9:amd64 install -liblouisutdml-bin install -liblouisutdml-data install -liblouisutdml6:amd64 install -liblqr-1-0:amd64 install -liblsan0:amd64 install -libltdl-dev:amd64 install -libltdl7:amd64 install -liblua5.1-0:amd64 install -liblua5.1-0-dev:amd64 install -liblua5.2-0:amd64 install -libluajit-5.1-2:amd64 install -libluajit-5.1-common install -liblwp-mediatypes-perl install -liblwp-protocol-https-perl install -liblwres141:amd64 install -liblz4-1:amd64 install -liblzma-dev:amd64 install -liblzma5:amd64 install -liblzo2-2:amd64 install -libmad0:amd64 install -libmagic1:amd64 install -libmagick++-6.q16-5v5:amd64 install -libmagickcore-6.q16-2:amd64 install -libmagickcore-6.q16-2-extra:amd64 install -libmagickwand-6.q16-2:amd64 install -libmail-sendmail-perl install -libmailtools-perl install -libmatroska6v5:amd64 install -libmbim-glib4:amd64 install -libmbim-proxy install -libmedia1 install -libmediaart-2.0-0:amd64 install -libmessaging-menu0:amd64 install -libmetacity-private3a:amd64 install -libmhash2:amd64 install -libmicrodns0:amd64 install -libminiupnpc10:amd64 install -libmirclient-dev:amd64 install -libmirclient9:amd64 install -libmircommon-dev:amd64 install -libmircommon5:amd64 install -libmircommon7:amd64 install -libmircookie-dev:amd64 install -libmircookie2:amd64 install -libmircore-dev:amd64 install -libmircore1:amd64 install -libmirprotobuf3:amd64 install -libmm-glib0:amd64 install -libmng2:amd64 install -libmnl0:amd64 install -libmodplug1:amd64 install -libmount1:amd64 install -libmp3lame0:amd64 install -libmpc3:amd64 install -libmpcdec6:amd64 install -libmpdec2:amd64 install -libmpeg2-4:amd64 install -libmpfr4:amd64 install -libmpg123-0:amd64 install -libmpg123-dev:amd64 install -libmpx0:amd64 install -libmspub-0.1-1:amd64 install -libmtdev1:amd64 install -libmtp-common install -libmtp-runtime install -libmtp9:amd64 install -libmwaw-0.3-3:amd64 install -libmythes-1.2-0:amd64 install -libnatpmp1:amd64 install -libnautilus-extension1a:amd64 install -libncurses5:amd64 install -libncurses5-dev:amd64 install -libncursesw5:amd64 install -libndp0:amd64 install -libneon27-gnutls:amd64 install -libnet-dbus-perl install -libnet-dns-perl install -libnet-domain-tld-perl install -libnet-http-perl install -libnet-ip-perl install -libnet-libidn-perl install -libnet-smtp-ssl-perl install -libnet-ssleay-perl install -libnetfilter-conntrack3:amd64 install -libnetpbm10 install -libnettle6:amd64 install -libnewt0.52:amd64 install -libnfnetlink0:amd64 install -libnfs8:amd64 install -libnghttp2-14:amd64 install -libnih-dbus1:amd64 install -libnih1:amd64 install -libnl-3-200:amd64 install -libnl-genl-3-200:amd64 install -libnl-route-3-200:amd64 install -libnm-glib-vpn1:amd64 install -libnm-glib4:amd64 install -libnm-gtk-common install -libnm-gtk0:amd64 install -libnm-util2:amd64 install -libnm0:amd64 install -libnma-common install -libnma0:amd64 install -libnotify-bin install -libnotify4:amd64 install -libnpth0:amd64 install -libnspr4:amd64 install -libnss-mdns:amd64 install -libnss3:amd64 install -libnss3-nssdb install -libnuma-dev:amd64 install -libnuma1:amd64 install -libnux-4.0-0 install -libnux-4.0-common install -liboauth0:amd64 install -libodfgen-0.1-1 install -libogg0:amd64 install -libopenal-data install -libopenal1:amd64 install -libopenblas-base install -libopenblas-dev install -libopencolorio1v5 install -libopencore-amrnb0:amd64 install -libopencore-amrwb0:amd64 install -libopencv-core2.4v5:amd64 install -libopencv-highgui2.4v5:amd64 install -libopencv-imgproc2.4v5:amd64 install -libopenexr22:amd64 install -libopenimageio1.6 install -libopenjp2-7:amd64 install -libopenjpeg5:amd64 install -libopenmpi-dev install -libopenmpi1.10 install -libopenmpt-modplug1:amd64 install -libopenmpt0:amd64 install -libopus0:amd64 install -liborc-0.4-0:amd64 install -liborcus-0.10-0v5:amd64 install -libosmesa6:amd64 install -libout123-0:amd64 install -liboxideqt-qmlplugin:amd64 install -liboxideqtcore0:amd64 install -liboxideqtquick0:amd64 install -libp11-kit-gnome-keyring:amd64 install -libp11-kit0:amd64 install -libpackagekit-glib2-16:amd64 install -libpagemaker-0.0-0:amd64 install -libpam-gnome-keyring:amd64 install -libpam-modules:amd64 install -libpam-modules-bin install -libpam-runtime install -libpam-systemd:amd64 install -libpam0g:amd64 install -libpango-1.0-0:amd64 install -libpango-perl install -libpango1.0-0:amd64 install -libpangocairo-1.0-0:amd64 install -libpangoft2-1.0-0:amd64 install -libpangomm-1.4-1v5:amd64 install -libpangox-1.0-0:amd64 install -libpangoxft-1.0-0:amd64 install -libpaper-utils install -libpaper1:amd64 install -libparse-debianchangelog-perl install -libparted-fs-resize0:amd64 install -libparted2:amd64 install -libpcap0.8:amd64 install -libpci3:amd64 install -libpciaccess-dev:amd64 install -libpciaccess0:amd64 install -libpcre16-3:amd64 install -libpcre3:amd64 install -libpcsclite1:amd64 install -libpeas-1.0-0:amd64 install -libpeas-1.0-0-python3loader install -libpeas-common install -libperl5.22:amd64 install -libperlio-gzip-perl install -libpipeline1:amd64 install -libpixman-1-0:amd64 install -libpixman-1-dev install -libplist3:amd64 install -libplot2c2 install -libplymouth4:amd64 install -libpng-dev:amd64 install -libpng-tools install -libpng12-0:amd64 install -libpng16-16:amd64 install -libpolkit-agent-1-0:amd64 install -libpolkit-backend-1-0:amd64 install -libpolkit-gobject-1-0:amd64 install -libpoppler-glib8:amd64 install -libpoppler-qt4-4:amd64 install -libpoppler-qt5-1:amd64 install -libpoppler58:amd64 install -libpopt0:amd64 install -libportaudio2:amd64 install -libpostproc-ffmpeg53:amd64 install -libpostproc54:amd64 install -libpotrace0 install -libprocps4:amd64 install -libprotobuf-dev:amd64 install -libprotobuf-lite9v5:amd64 install -libprotobuf9v5:amd64 install -libproxy-tools install -libproxy1-plugin-gsettings:amd64 install -libproxy1-plugin-networkmanager:amd64 install -libproxy1v5:amd64 install -libpstoedit0c2a install -libptexenc1:amd64 install -libpthread-stubs0-dev:amd64 install -libpulse-mainloop-glib0:amd64 install -libpulse0:amd64 install -libpulsedsp:amd64 install -libpwquality-common install -libpwquality1:amd64 install -libpython-all-dev:amd64 install -libpython-dev:amd64 install -libpython-stdlib:amd64 install -libpython2.7:amd64 install -libpython2.7-dev:amd64 install -libpython2.7-minimal:amd64 install -libpython2.7-stdlib:amd64 install -libpython3-dev:amd64 install -libpython3-stdlib:amd64 install -libpython3.5:amd64 install -libpython3.5-dev:amd64 install -libpython3.5-minimal:amd64 install -libpython3.5-stdlib:amd64 install -libqmi-glib1:amd64 install -libqmi-glib5:amd64 install -libqmi-proxy install -libqpdf17:amd64 install -libqqwing2v5:amd64 install -libqt4-dbus:amd64 install -libqt4-declarative:amd64 install -libqt4-designer:amd64 install -libqt4-dev install -libqt4-dev-bin install -libqt4-help:amd64 install -libqt4-network:amd64 install -libqt4-opengl:amd64 install -libqt4-opengl-dev install -libqt4-qt3support:amd64 install -libqt4-script:amd64 install -libqt4-scripttools:amd64 install -libqt4-sql:amd64 install -libqt4-sql-sqlite:amd64 install -libqt4-svg:amd64 install -libqt4-test:amd64 install -libqt4-xml:amd64 install -libqt4-xmlpatterns:amd64 install -libqt5core5a:amd64 install -libqt5dbus5:amd64 install -libqt5feedback5:amd64 install -libqt5gui5:amd64 install -libqt5multimedia5:amd64 install -libqt5network5:amd64 install -libqt5opengl5:amd64 install -libqt5organizer5:amd64 install -libqt5positioning5:amd64 install -libqt5printsupport5:amd64 install -libqt5qml5:amd64 install -libqt5quick5:amd64 install -libqt5quicktest5:amd64 install -libqt5script5:amd64 install -libqt5sql5:amd64 install -libqt5sql5-sqlite:amd64 install -libqt5svg5:amd64 install -libqt5test5:amd64 install -libqt5webkit5:amd64 install -libqt5widgets5:amd64 install -libqt5x11extras5:amd64 install -libqt5xml5:amd64 install -libqtcore4:amd64 install -libqtdbus4:amd64 install -libqtgui4:amd64 install -libquadmath0:amd64 install -libquvi-scripts install -libquvi7:amd64 install -libraptor2-0:amd64 install -librasqal3:amd64 install -libraw1394-11:amd64 install -libraw15:amd64 install -librdf0:amd64 install -libreadline-dev:amd64 install -libreadline6:amd64 install -libreadline6-dev:amd64 install -libreoffice-avmedia-backend-gstreamer install -libreoffice-base-core install -libreoffice-calc install -libreoffice-common install -libreoffice-core install -libreoffice-draw install -libreoffice-gnome install -libreoffice-gtk install -libreoffice-help-en-us install -libreoffice-impress install -libreoffice-math install -libreoffice-ogltrans install -libreoffice-pdfimport install -libreoffice-style-breeze install -libreoffice-style-galaxy install -libreoffice-writer install -libresid-builder0c2a install -librest-0.7-0:amd64 install -librevenge-0.0-0:amd64 install -librhythmbox-core9:amd64 install -libroken18-heimdal:amd64 install -librsvg2-2:amd64 install -librsvg2-common:amd64 install -librtmp1:amd64 install -libruby2.3:amd64 install -libsamplerate0:amd64 install -libsane:amd64 install -libsane-common install -libsane-hpaio:amd64 install -libsasl2-2:amd64 install -libsasl2-modules:amd64 install -libsasl2-modules-db:amd64 install -libsbc1:amd64 install -libschroedinger-1.0-0:amd64 install -libsdl-image1.2:amd64 install -libsdl1.2debian:amd64 install -libseccomp2:amd64 install -libsecret-1-0:amd64 install -libsecret-common install -libselinux1:amd64 install -libsemanage-common install -libsemanage1:amd64 install -libsensors4:amd64 install -libsepol1:amd64 install -libsgutils2-2 install -libshine3:amd64 install -libshout3:amd64 install -libsidplay1v5 install -libsidplay2v5 install -libsigc++-2.0-0v5:amd64 install -libsignon-extension1:amd64 install -libsignon-glib1:amd64 install -libsignon-plugins-common1:amd64 install -libsignon-qt5-1:amd64 install -libsigsegv2:amd64 install -libslang2:amd64 install -libsm-dev:amd64 install -libsm6:amd64 install -libsmartcols1:amd64 install -libsmbclient:amd64 install -libsmi2ldbl:amd64 install -libsnapd-glib1:amd64 install -libsnappy1v5:amd64 install -libsndfile1:amd64 install -libsndio6.1:amd64 install -libsnmp-base install -libsnmp30:amd64 install -libsocket6-perl install -libsodium18:amd64 install -libsoil-dev install -libsoil1 install -libsonic0:amd64 install -libsoup-gnome2.4-1:amd64 install -libsoup2.4-1:amd64 install -libsox-dev:amd64 install -libsox-fmt-all:amd64 install -libsox-fmt-alsa:amd64 install -libsox-fmt-ao:amd64 install -libsox-fmt-base:amd64 install -libsox-fmt-mp3:amd64 install -libsox-fmt-oss:amd64 install -libsox-fmt-pulse:amd64 install -libsox2:amd64 install -libsoxr0:amd64 install -libspandsp2:amd64 install -libspectre1:amd64 install -libspeechd2:amd64 install -libspeex1:amd64 install -libspeexdsp1:amd64 install -libspnav0 install -libsqlite3-0:amd64 install -libss2:amd64 install -libssh-4:amd64 install -libssh-gcrypt-4:amd64 install -libssh2-1:amd64 install -libssl-dev:amd64 install -libssl-doc install -libssl1.0.0:amd64 install -libstartup-notification0:amd64 install -libstdc++-4.9-dev:amd64 install -libstdc++-5-dev:amd64 install -libstdc++6:amd64 install -libsub-name-perl install -libsuitesparseconfig4.4.6:amd64 install -libswresample-ffmpeg1:amd64 install -libswresample2:amd64 install -libswscale-ffmpeg3:amd64 install -libswscale4:amd64 install -libsynctex1:amd64 install -libsys-hostname-long-perl install -libsystemd0:amd64 install -libsz2:amd64 install -libtag1v5:amd64 install -libtag1v5-vanilla:amd64 install -libtalloc2:amd64 install -libtasn1-6:amd64 install -libtbb2:amd64 install -libtcl8.6:amd64 install -libtdb1:amd64 install -libtelepathy-glib0:amd64 install -libtevent0:amd64 install -libtexlua52:amd64 install -libtexluajit2:amd64 install -libtext-charwidth-perl install -libtext-iconv-perl install -libtext-levenshtein-perl install -libtext-unidecode-perl install -libtext-wrapi18n-perl install -libthai-data install -libthai0:amd64 install -libtheora0:amd64 install -libtie-ixhash-perl install -libtiff5:amd64 install -libtiff5-dev:amd64 install -libtiffxx5:amd64 install -libtimedate-perl install -libtimezonemap-data install -libtimezonemap1:amd64 install -libtinfo-dev:amd64 install -libtinfo5:amd64 install -libtinyxml2.6.2v5:amd64 install -libtk8.6:amd64 install -libtool install -libtool-bin install -libtotem-plparser-common install -libtotem-plparser18:amd64 install -libtotem0:amd64 install -libtracker-sparql-1.0-0:amd64 install -libtsan0:amd64 install -libtwolame0:amd64 install -libtxc-dxtn-s2tc0:amd64 install -libubsan0:amd64 install -libubuntugestures5:amd64 install -libubuntutoolkit5:amd64 install -libudev1:amd64 install -libudisks2-0:amd64 install -libunistring0:amd64 install -libunity-action-qt1:amd64 install -libunity-control-center1 install -libunity-core-6.0-9:amd64 install -libunity-gtk2-parser0:amd64 install -libunity-gtk3-parser0:amd64 install -libunity-misc4 install -libunity-protocol-private0:amd64 install -libunity-scopes-json-def-desktop install -libunity-settings-daemon1:amd64 install -libunity-webapps0:amd64 install -libunity9:amd64 install -libunwind8 install -libupnp6 install -libupower-glib3:amd64 install -liburi-perl install -liburl-dispatcher1:amd64 install -libusageenvironment3:amd64 install -libusb-0.1-4:amd64 install -libusb-1.0-0:amd64 install -libusbmuxd4:amd64 install -libustr-1.0-1:amd64 install -libutempter0:amd64 install -libuuid-perl install -libuuid1:amd64 install -libuv1:amd64 install -libuv1-dev:amd64 install -libv4l-0:amd64 install -libv4lconvert0:amd64 install -libva-drm1:amd64 install -libva-wayland1:amd64 install -libva-x11-1:amd64 install -libva1:amd64 install -libvdpau1:amd64 install -libvisio-0.1-1:amd64 install -libvisual-0.4-0:amd64 install -libvlc-bin:amd64 install -libvlc5:amd64 install -libvlccore9:amd64 install -libvncclient1:amd64 install -libvorbis0a:amd64 install -libvorbisenc2:amd64 install -libvorbisfile3:amd64 install -libvpx3:amd64 install -libvte-2.91-0:amd64 install -libvte-2.91-common install -libwacom-bin install -libwacom-common install -libwacom2:amd64 install -libwavpack1:amd64 install -libwayland-client0:amd64 install -libwayland-cursor0:amd64 install -libwayland-egl1-mesa:amd64 install -libwayland-server0:amd64 install -libwbclient0:amd64 install -libwebkit2gtk-4.0-37:amd64 install -libwebkit2gtk-4.0-37-gtk2:amd64 install -libwebp5:amd64 install -libwebpmux1:amd64 install -libwebrtc-audio-processing-0:amd64 install -libwhoopsie-preferences0 install -libwhoopsie0:amd64 install -libwind0-heimdal:amd64 install -libwinpr-crt0.1:amd64 install -libwinpr-dsparse0.1:amd64 install -libwinpr-environment0.1:amd64 install -libwinpr-file0.1:amd64 install -libwinpr-handle0.1:amd64 install -libwinpr-heap0.1:amd64 install -libwinpr-input0.1:amd64 install -libwinpr-interlocked0.1:amd64 install -libwinpr-library0.1:amd64 install -libwinpr-path0.1:amd64 install -libwinpr-pool0.1:amd64 install -libwinpr-registry0.1:amd64 install -libwinpr-rpc0.1:amd64 install -libwinpr-sspi0.1:amd64 install -libwinpr-synch0.1:amd64 install -libwinpr-sysinfo0.1:amd64 install -libwinpr-thread0.1:amd64 install -libwinpr-utils0.1:amd64 install -libwireshark-data install -libwireshark10:amd64 install -libwiretap7:amd64 install -libwmf-dev install -libwmf0.2-7:amd64 install -libwmf0.2-7-gtk install -libwnck-3-0:amd64 install -libwnck-3-common install -libwpd-0.10-10:amd64 install -libwpg-0.3-3:amd64 install -libwps-0.4-4:amd64 install -libwrap0:amd64 install -libwscodecs1:amd64 install -libwsutil8:amd64 install -libwww-perl install -libwww-robotrules-perl install -libwxbase3.0-0v5:amd64 install -libwxgtk3.0-0v5:amd64 install -libx11-6:amd64 install -libx11-data install -libx11-dev:amd64 install -libx11-doc install -libx11-protocol-perl install -libx11-xcb-dev:amd64 install -libx11-xcb1:amd64 install -libx264-148:amd64 install -libx265-79:amd64 install -libx86-1:amd64 install -libxapian22v5:amd64 install -libxatracker2:amd64 install -libxau-dev:amd64 install -libxau6:amd64 install -libxaw7:amd64 install -libxaw7-dev:amd64 install -libxcb-dri2-0:amd64 install -libxcb-dri2-0-dev:amd64 install -libxcb-dri3-0:amd64 install -libxcb-dri3-dev:amd64 install -libxcb-glx0:amd64 install -libxcb-glx0-dev:amd64 install -libxcb-icccm4:amd64 install -libxcb-image0:amd64 install -libxcb-keysyms1:amd64 install -libxcb-present-dev:amd64 install -libxcb-present0:amd64 install -libxcb-randr0:amd64 install -libxcb-randr0-dev:amd64 install -libxcb-render-util0:amd64 install -libxcb-render0:amd64 install -libxcb-render0-dev:amd64 install -libxcb-shape0:amd64 install -libxcb-shape0-dev:amd64 install -libxcb-shm0:amd64 install -libxcb-sync-dev:amd64 install -libxcb-sync1:amd64 install -libxcb-util1:amd64 install -libxcb-xfixes0:amd64 install -libxcb-xfixes0-dev:amd64 install -libxcb-xkb1:amd64 install -libxcb-xv0:amd64 install -libxcb1:amd64 install -libxcb1-dev:amd64 install -libxcomposite-dev install -libxcomposite1:amd64 install -libxcursor-dev:amd64 install -libxcursor1:amd64 install -libxdamage-dev:amd64 install -libxdamage1:amd64 install -libxdmcp-dev:amd64 install -libxdmcp6:amd64 install -libxext-dev:amd64 install -libxext6:amd64 install -libxfixes-dev:amd64 install -libxfixes3:amd64 install -libxfont-dev install -libxfont1:amd64 install -libxfont2:amd64 install -libxft-dev install -libxft2:amd64 install -libxi-dev install -libxi6:amd64 install -libxinerama-dev:amd64 install -libxinerama1:amd64 install -libxkbcommon-dev install -libxkbcommon-x11-0:amd64 install -libxkbcommon0:amd64 install -libxkbfile-dev:amd64 install -libxkbfile1:amd64 install -libxklavier16:amd64 install -libxml-libxml-perl install -libxml-namespacesupport-perl install -libxml-parser-perl install -libxml-sax-base-perl install -libxml-sax-expat-perl install -libxml-sax-perl install -libxml-twig-perl install -libxml-xpathengine-perl install -libxml2:amd64 install -libxml2-dev:amd64 install -libxmu-dev:amd64 install -libxmu-headers install -libxmu6:amd64 install -libxmuu-dev:amd64 install -libxmuu1:amd64 install -libxnvctrl0 install -libxpm-dev:amd64 install -libxpm4:amd64 install -libxrandr-dev:amd64 install -libxrandr2:amd64 install -libxrender-dev:amd64 install -libxrender1:amd64 install -libxres-dev install -libxres1:amd64 install -libxshmfence-dev:amd64 install -libxshmfence1:amd64 install -libxslt1.1:amd64 install -libxss-dev:amd64 install -libxss1:amd64 install -libxt-dev:amd64 install -libxt6:amd64 install -libxtables11:amd64 install -libxtst-dev:amd64 install -libxtst6:amd64 install -libxv-dev:amd64 install -libxv1:amd64 install -libxvidcore4:amd64 install -libxvmc-dev:amd64 install -libxvmc1:amd64 install -libxxf86dga-dev:amd64 install -libxxf86dga1:amd64 install -libxxf86vm-dev:amd64 install -libxxf86vm1:amd64 install -libyajl2:amd64 install -libyaml-0-2:amd64 install -libyaml-cpp0.3v5:amd64 install -libyaml-libyaml-perl install -libyaml-tiny-perl install -libyelp0:amd64 install -libzeitgeist-1.0-1:amd64 install -libzeitgeist-2.0-0:amd64 install -libzmq3-dev:amd64 install -libzmq5:amd64 install -libzvbi-common install -libzvbi0:amd64 install -libzzip-0-13:amd64 install -light-themes install -lightdm install -lintian install -linux-base install -linux-firmware install -linux-generic install -linux-generic-hwe-16.04 install -linux-headers-4.13.0-36 install -linux-headers-4.13.0-36-generic install -linux-headers-4.13.0-37 install -linux-headers-4.13.0-37-generic install -linux-headers-4.4.0-116 install -linux-headers-4.4.0-116-generic install -linux-headers-generic install -linux-headers-generic-hwe-16.04 install -linux-image-4.10.0-28-generic deinstall -linux-image-4.13.0-36-generic install -linux-image-4.13.0-37-generic install -linux-image-4.4.0-116-generic install -linux-image-extra-4.10.0-28-generic deinstall -linux-image-extra-4.13.0-36-generic install -linux-image-extra-4.13.0-37-generic install -linux-image-extra-4.4.0-116-generic install -linux-image-generic install -linux-image-generic-hwe-16.04 install -linux-libc-dev:amd64 install -linux-signed-generic-hwe-16.04 install -linux-signed-image-4.10.0-28-generic deinstall -linux-signed-image-4.13.0-36-generic install -linux-signed-image-4.13.0-37-generic install -linux-signed-image-generic-hwe-16.04 install -linux-sound-base install -linuxdcpp install -lm-sensors install -lmodern install -locales install -login install -logrotate install -lp-solve install -lsb-base install -lsb-release install -lshw install -lsof install -ltrace install -lua-lpeg:amd64 install -lua5.1 install -luarocks install -m4 install -make install -makedev install -man-db install -manpages install -manpages-dev install -mawk install -media-player-info install -memtest86+ install -mesa-common-dev:amd64 install -mesa-utils install -mesa-va-drivers:amd64 install -mesa-vdpau-drivers:amd64 install -metacity-common install -mime-support install -mir-client-platform-mesa-dev:amd64 install -mlocate install -mobile-broadband-provider-info install -modemmanager install -mokutil install -mount install -mountall install -mousetweaks install -mpi-default-bin install -mpi-default-dev install -mscompress install -mtools install -mtr-tiny install -multiarch-support install -mysql-client-5.7 install -mysql-client-core-5.7 install -mysql-common install -mysql-server install -mysql-server-5.7 install -mysql-server-core-5.7 install -mythes-en-us install -nano install -nautilus install -nautilus-data install -nautilus-sendto install -nautilus-share install -ncdu install -ncurses-base install -ncurses-bin install -ndiff install -net-tools install -netbase install -netcat-openbsd install -netpbm install -network-manager install -network-manager-gnome install -network-manager-pptp install -network-manager-pptp-gnome install -nmap install -node-abbrev install -node-ansi install -node-ansi-color-table install -node-archy install -node-async install -node-block-stream install -node-combined-stream install -node-cookie-jar install -node-delayed-stream install -node-forever-agent install -node-form-data install -node-fstream install -node-fstream-ignore install -node-github-url-from-git install -node-glob install -node-graceful-fs install -node-gyp install -node-inherits install -node-ini install -node-json-stringify-safe install -node-lockfile install -node-lru-cache install -node-mime install -node-minimatch install -node-mkdirp install -node-mute-stream install -node-node-uuid install -node-nopt install -node-normalize-package-data install -node-npmlog install -node-once install -node-osenv install -node-qs install -node-read install -node-read-package-json install -node-request install -node-retry install -node-rimraf install -node-semver install -node-sha install -node-sigmund install -node-slide install -node-tar install -node-tunnel-agent install -node-underscore install -node-which install -nodejs install -nodejs-dev install -notify-osd install -notify-osd-icons install -npm install -ntfs-3g install -nux-tools install -nvidia-384 install -nvidia-384-dev install -nvidia-390 deinstall -nvidia-modprobe install -nvidia-opencl-icd-384 install -nvidia-opencl-icd-390 deinstall -nvidia-prime install -nvidia-settings install -ocl-icd-libopencl1:amd64 install -onboard install -onboard-data install -openjdk-8-jdk:amd64 install -openjdk-8-jdk-headless:amd64 install -openjdk-8-jre:amd64 install -openjdk-8-jre-headless:amd64 install -openmpi-bin install -openmpi-common install -openoffice.org-hyphenation install -openprinting-ppds install -openssh-client install -openssl install -os-prober install -overlay-scrollbar install -overlay-scrollbar-gtk2:amd64 install -oxideqt-codecs:amd64 install -p11-kit install -p11-kit-modules:amd64 install -pandoc install -pandoc-data install -parted install -passwd install -patch install -patchutils install -pciutils install -pcmciautils install -perl install -perl-base install -perl-modules-5.22 install -pfb2t1c2pfb install -pinentry-curses install -pinentry-gnome3 install -pkg-config install -plainbox-provider-checkbox install -plainbox-provider-resource-generic install -plainbox-secure-policy install -plymouth install -plymouth-label install -plymouth-theme-ubuntu-logo install -plymouth-theme-ubuntu-text install -pm-utils install -po-debconf install -policykit-1 install -policykit-1-gnome install -policykit-desktop-privileges install -poppler-data install -poppler-utils install -popularity-contest install -powermgmt-base install -ppp install -pppconfig install -pppoeconf install -pptp-linux install -preload install -prerex install -preview-latex-style install -printer-driver-brlaser install -printer-driver-c2esp install -printer-driver-foo2zjs install -printer-driver-foo2zjs-common install -printer-driver-gutenprint install -printer-driver-hpcups install -printer-driver-min12xxw install -printer-driver-pnm2ppa install -printer-driver-postscript-hp install -printer-driver-ptouch install -printer-driver-pxljr install -printer-driver-sag-gdi install -printer-driver-splix install -procps install -prosper install -ps2eps install -psensor install -psensor-common install -psmisc install -pstoedit install -psutils install -pulseaudio install -pulseaudio-module-bluetooth install -pulseaudio-module-x11 install -pulseaudio-utils install -purifyeps install -pydf install -pyotherside install -python install -python-all install -python-all-dev install -python-apt install -python-apt-common install -python-bs4 install -python-chardet install -python-decorator install -python-dev install -python-html5lib install -python-lxml install -python-minimal install -python-numpy install -python-pexpect install -python-pil:amd64 install -python-pil.imagetk:amd64 install -python-pip install -python-pip-whl install -python-pkg-resources install -python-ptyprocess install -python-pycurl install -python-setuptools install -python-simplegeneric install -python-six install -python-software-properties install -python-talloc install -python-tk install -python-virtualenv install -python-wheel install -python2.7 install -python2.7-dev install -python2.7-minimal install -python3 install -python3-apport install -python3-apt install -python3-aptdaemon install -python3-aptdaemon.gtk3widgets install -python3-aptdaemon.pkcompat install -python3-blinker install -python3-brlapi install -python3-bs4 install -python3-cairo install -python3-cffi-backend install -python3-chardet install -python3-checkbox-support install -python3-commandnotfound install -python3-cryptography install -python3-cups install -python3-cupshelpers install -python3-dbus install -python3-debian install -python3-decorator install -python3-defer install -python3-dev install -python3-distupgrade install -python3-feedparser install -python3-gdbm:amd64 install -python3-gi install -python3-gi-cairo install -python3-guacamole install -python3-html5lib install -python3-httplib2 install -python3-idna install -python3-jinja2 install -python3-jwt install -python3-louis install -python3-lxml install -python3-mako install -python3-markupsafe install -python3-minimal install -python3-numpy install -python3-oauthlib install -python3-padme install -python3-pexpect install -python3-pil:amd64 install -python3-pip install -python3-pkg-resources install -python3-plainbox install -python3-problem-report install -python3-ptyprocess install -python3-pyasn1 install -python3-pyatspi install -python3-pycurl install -python3-pyparsing install -python3-renderpm:amd64 install -python3-reportlab install -python3-reportlab-accel:amd64 install -python3-requests install -python3-setuptools install -python3-simplegeneric install -python3-six install -python3-software-properties install -python3-speechd install -python3-systemd install -python3-tk install -python3-uno install -python3-update-manager install -python3-urllib3 install -python3-venv install -python3-virtualenv install -python3-wheel install -python3-xdg install -python3-xkit install -python3-xlsxwriter install -python3.5 install -python3.5-dev install -python3.5-minimal install -python3.5-venv install -qdbus install -qml-module-io-thp-pyotherside:amd64 install -qml-module-qt-labs-folderlistmodel:amd64 install -qml-module-qt-labs-settings:amd64 install -qml-module-qtfeedback:amd64 install -qml-module-qtgraphicaleffects:amd64 install -qml-module-qtquick-layouts:amd64 install -qml-module-qtquick-window2:amd64 install -qml-module-qtquick2:amd64 install -qml-module-qttest:amd64 install -qml-module-ubuntu-components:amd64 install -qml-module-ubuntu-layouts:amd64 install -qml-module-ubuntu-onlineaccounts:amd64 install -qml-module-ubuntu-performancemetrics:amd64 install -qml-module-ubuntu-test:amd64 install -qml-module-ubuntu-web:amd64 install -qmlscene install -qpdf install -qt-at-spi:amd64 install -qt4-linguist-tools install -qt4-qmake install -qtchooser install -qtcore4-l10n install -qtdeclarative5-accounts-plugin:amd64 install -qtdeclarative5-dev-tools install -qtdeclarative5-qtquick2-plugin:amd64 install -qtdeclarative5-test-plugin:amd64 install -qtdeclarative5-ubuntu-ui-toolkit-plugin install -qtdeclarative5-unity-action-plugin:amd64 install -qttranslations5-l10n install -rake install -readline-common install -remmina install -remmina-common install -remmina-plugin-rdp install -remmina-plugin-vnc install -rename install -resolvconf install -rfkill install -rhythmbox install -rhythmbox-data install -rhythmbox-plugin-zeitgeist install -rhythmbox-plugins install -rsync install -rsyslog install -rtkit install -ruby install -ruby-did-you-mean install -ruby-minitest install -ruby-net-telnet install -ruby-power-assert install -ruby-test-unit install -ruby2.3 install -rubygems-integration install -samba-libs:amd64 install -sane-utils install -sbsigntool install -screen-resolution-extra install -seahorse install -secureboot-db install -sed install -sensible-utils install -session-migration install -session-shortcuts install -sessioninstaller install -sgml-base install -shared-mime-info install -shim install -shim-signed install -shotwell install -shotwell-common install -signon-keyring-extension install -signon-plugin-oauth2 install -signon-plugin-password install -signon-ui install -signon-ui-service install -signon-ui-x11 install -signond install -simple-scan install -snapd install -snapd-login-service install -sni-qt:amd64 install -software-properties-common install -software-properties-gtk install -sound-theme-freedesktop install -sox install -speech-dispatcher install -speech-dispatcher-audio-plugins:amd64 install -squashfs-tools install -ssl-cert install -strace install -sublime-text install -sudo install -suru-icon-theme install -swig install -swig3.0 install -syslinux install -syslinux-common install -syslinux-legacy install -system-config-printer-common install -system-config-printer-gnome install -system-config-printer-udev install -systemd install -systemd-sysv install -sysv-rc install -sysvinit-utils install -t1utils install -tar install -tcl install -tcl8.6 install -tcpd install -tcpdump install -telnet install -tex-common install -tex-gyre install -tex4ht install -tex4ht-common install -texinfo install -texlive-base install -texlive-bibtex-extra install -texlive-binaries install -texlive-extra-utils install -texlive-font-utils install -texlive-fonts-extra install -texlive-fonts-extra-doc install -texlive-fonts-recommended install -texlive-fonts-recommended-doc install -texlive-formats-extra install -texlive-full install -texlive-games install -texlive-generic-extra install -texlive-generic-recommended install -texlive-htmlxml install -texlive-humanities install -texlive-humanities-doc install -texlive-lang-african install -texlive-lang-arabic install -texlive-lang-chinese install -texlive-lang-cjk install -texlive-lang-cyrillic install -texlive-lang-czechslovak install -texlive-lang-english install -texlive-lang-european install -texlive-lang-french install -texlive-lang-german install -texlive-lang-greek install -texlive-lang-indic install -texlive-lang-italian install -texlive-lang-japanese install -texlive-lang-korean install -texlive-lang-other install -texlive-lang-polish install -texlive-lang-portuguese install -texlive-lang-spanish install -texlive-latex-base install -texlive-latex-base-doc install -texlive-latex-extra install -texlive-latex-extra-doc install -texlive-latex-recommended install -texlive-latex-recommended-doc install -texlive-luatex install -texlive-math-extra install -texlive-metapost install -texlive-metapost-doc install -texlive-music install -texlive-omega install -texlive-pictures install -texlive-pictures-doc install -texlive-plain-extra install -texlive-pstricks install -texlive-pstricks-doc install -texlive-publishers install -texlive-publishers-doc install -texlive-science install -texlive-science-doc install -texlive-xetex install -texmaker install -texmaker-data install -thermald install -thunderbird install -thunderbird-gnome-support install -thunderbird-locale-en install -thunderbird-locale-en-us install -time install -tipa install -tk install -tk8.6 install -tk8.6-blt2.5 install -tmux install -toshset install -totem install -totem-common install -totem-plugins install -transmission-common install -transmission-gtk install -tree install -ttf-adf-accanthis install -ttf-adf-gillius install -ttf-adf-universalis install -ttf-ancient-fonts-symbola install -ttf-ubuntu-font-family install -tzdata install -ubuntu-artwork install -ubuntu-core-launcher install -ubuntu-desktop install -ubuntu-docs install -ubuntu-drivers-common install -ubuntu-keyring install -ubuntu-minimal install -ubuntu-mobile-icons install -ubuntu-mono install -ubuntu-release-upgrader-core install -ubuntu-release-upgrader-gtk install -ubuntu-session install -ubuntu-settings install -ubuntu-software install -ubuntu-sounds install -ubuntu-standard install -ubuntu-system-service install -ubuntu-touch-sounds install -ubuntu-ui-toolkit-theme install -ubuntu-wallpapers install -ubuntu-wallpapers-xenial install -ucf install -udev install -udisks2 install -ufw install -unattended-upgrades install -unity install -unity-accessibility-profiles install -unity-asset-pool install -unity-control-center install -unity-control-center-faces install -unity-control-center-signon install -unity-greeter install -unity-gtk-module-common install -unity-gtk2-module:amd64 install -unity-gtk3-module:amd64 install -unity-lens-applications install -unity-lens-files install -unity-lens-music install -unity-lens-photos install -unity-lens-video install -unity-schemas install -unity-scope-calculator install -unity-scope-chromiumbookmarks install -unity-scope-colourlovers install -unity-scope-devhelp install -unity-scope-firefoxbookmarks install -unity-scope-gdrive install -unity-scope-home install -unity-scope-manpages install -unity-scope-openclipart install -unity-scope-texdoc install -unity-scope-tomboy install -unity-scope-video-remote install -unity-scope-virtualbox install -unity-scope-yelp install -unity-scope-zotero install -unity-scopes-master-default install -unity-scopes-runner install -unity-services install -unity-settings-daemon install -unity-tweak-tool install -unity-webapps-common install -unity-webapps-qml install -unity-webapps-service install -uno-libs3 install -unzip install -update-inetd install -update-manager install -update-manager-core install -update-notifier install -update-notifier-common install -upower install -upstart install -ure install -ureadahead install -usb-creator-common install -usb-creator-gtk install -usb-modeswitch install -usb-modeswitch-data install -usbmuxd install -usbutils install -util-linux install -uuid-runtime install -va-driver-all:amd64 install -vbetool install -vdpau-driver-all:amd64 install -vim install -vim-common install -vim-runtime install -vim-tiny install -vino install -virtualenv install -vlc install -vlc-bin install -vlc-data install -vlc-l10n install -vlc-plugin-base:amd64 install -vlc-plugin-notify:amd64 install -vlc-plugin-qt:amd64 install -vlc-plugin-samba:amd64 install -vlc-plugin-skins2:amd64 install -vlc-plugin-video-output:amd64 install -vlc-plugin-video-splitter:amd64 install -vlc-plugin-visualization:amd64 install -vprerex install -wamerican install -wbritish install -webapp-container install -webbrowser-app install -wget install -whiptail install -whoopsie install -whoopsie-preferences install -wireless-regdb install -wireless-tools install -wireshark install -wireshark-common install -wireshark-qt install -wpasupplicant install -x11-apps install -x11-common install -x11-session-utils install -x11-utils install -x11-xkb-utils install -x11-xserver-utils install -x11proto-bigreqs-dev install -x11proto-composite-dev install -x11proto-core-dev install -x11proto-damage-dev install -x11proto-dmx-dev install -x11proto-dri2-dev install -x11proto-dri3-dev install -x11proto-fixes-dev install -x11proto-fonts-dev install -x11proto-gl-dev install -x11proto-input-dev install -x11proto-kb-dev install -x11proto-present-dev install -x11proto-randr-dev install -x11proto-record-dev install -x11proto-render-dev install -x11proto-resource-dev install -x11proto-scrnsaver-dev install -x11proto-video-dev install -x11proto-xcmisc-dev install -x11proto-xext-dev install -x11proto-xf86bigfont-dev install -x11proto-xf86dga-dev install -x11proto-xf86dri-dev install -x11proto-xf86vidmode-dev install -x11proto-xinerama-dev install -xauth install -xbitmaps install -xbrlapi install -xcursor-themes install -xdg-user-dirs install -xdg-user-dirs-gtk install -xdg-utils install -xdiagnose install -xfonts-base install -xfonts-encodings install -xfonts-scalable install -xfonts-utils install -xinit install -xinput install -xkb-data install -xml-core install -xorg install -xorg-dev install -xorg-docs-core install -xorg-sgml-doctools install -xpad install -xserver-common install -xserver-xorg-core-hwe-16.04 install -xserver-xorg-dev-hwe-16.04 install -xserver-xorg-hwe-16.04 install -xserver-xorg-input-all-hwe-16.04 install -xserver-xorg-input-evdev-hwe-16.04 install -xserver-xorg-input-synaptics-hwe-16.04 install -xserver-xorg-input-wacom-hwe-16.04 install -xserver-xorg-legacy-hwe-16.04 install -xserver-xorg-video-all-hwe-16.04 install -xserver-xorg-video-amdgpu-hwe-16.04 install -xserver-xorg-video-ati-hwe-16.04 install -xserver-xorg-video-fbdev-hwe-16.04 install -xserver-xorg-video-intel-hwe-16.04 install -xserver-xorg-video-nouveau-hwe-16.04 install -xserver-xorg-video-qxl-hwe-16.04 install -xserver-xorg-video-radeon-hwe-16.04 install -xserver-xorg-video-vesa-hwe-16.04 install -xserver-xorg-video-vmware-hwe-16.04 install -xterm install -xtrans-dev install -xul-ext-ubufox install -xz-utils install -yelp install -yelp-xsl install -zeitgeist-core install -zeitgeist-datahub install -zenity install -zenity-common install -zip install -zlib1g:amd64 install -zlib1g-dev:amd64 install -zsh install -zsh-common install diff --git a/make_font_dataset.sh b/make_font_dataset.sh deleted file mode 100755 index 296a3a47..00000000 --- a/make_font_dataset.sh +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/bash - - -# Generate Synthetic text images using the convert/imagemagick library -# Make sure to create train data before test and val -if [ $# -ne 2 ] -then -echo "Please specify how many random words would you like to generate and the directory!" 1>&2 -echo "example: ./random-word-generator 3 train" 1>&2 -echo "This will generate 3 random words in dir train" 1>&2 -exit 0 -fi - -# Go to the dir -mkdir $2 $2A $2B -cd $2 - -# Constants -X=0 -ALL_NON_RANDOM_WORDS=/usr/share/dict/words -MAX_WORD_LENGTH=9 -MIN_WORD_LENGTH=4 -# Probablity * 10 change of getting a captial letter -PROB=0 -# total number of non-random words available -non_random_words=`cat $ALL_NON_RANDOM_WORDS | wc -l` - -if [ $2 = "train" ]; -then - echo "Generating Training data" - # rm train.txt - # touch train.txt -else - echo "Generating $2 data" - # Check file exista to check data - if [ -f "../train/train.txt" ]; - then - echo "Training data present. Making sure that $2 and traning data is disjoint" - else - echo "No training data present to check $2 and training data is disjoint" - exit 0 - fi -fi - -# while loop to generate random words -# number of random generated words depends on supplied argument - -for i in $(seq 1 1 "$1") -do -random_number=`od -N3 -An -i /dev/urandom | -awk -v f=0 -v r="$non_random_words" '{printf "%i\n", f + r * $1 / 16777216}'` - -random_word=$(sed `echo $random_number`"q;d" $ALL_NON_RANDOM_WORDS) -# If word size greater than MAX_WORD_LENGTH find another word or already present in train.txt -while [ $(echo $random_word | wc -m) -gt $MAX_WORD_LENGTH -o $(grep -F "$random_word" ../train/train.txt | wc -m ) -gt 0 ]; -do - echo "Already present: $random_word" - random_number=`od -N3 -An -i /dev/urandom | awk -v f=0 -v r="$non_random_words" '{printf "%i\n", f + r * $1 / 16777216}'` - random_word=$(sed `echo $random_number`"q;d" $ALL_NON_RANDOM_WORDS) - echo "New word: $random_word" -done - -while [ $(echo $random_word | wc -m) -lt $MIN_WORD_LENGTH -o $(grep -F "$random_word" ../train/train.txt | wc -m ) -gt 0 ]; -do - echo "Already present: $random_word" - random_number=`od -N3 -An -i /dev/urandom | awk -v f=0 -v r="$non_random_words" '{printf "%i\n", f + r * $1 / 16777216}'` - random_word=$(sed `echo $random_number`"q;d" $ALL_NON_RANDOM_WORDS) - echo "New word: $random_word" -done - -# Append word to the folder -echo $random_word >> ../train/train.txt - -# Randomly capitalize few words with probablity 0.1 -RANDOM=$(tr -dc 0-9 < /dev/urandom | head -c10); -# Check probablity -if [ $(expr $RANDOM % 10 ) -lt $PROB ]; -then - word_length=$( echo $random_word | wc -m) - for x in $(seq 0 1 $word_length ) - do - # Generate random word - # If yes convert from lower to upper at random position - # echo "Before: $random_word" - # Capitalize the letter at index x - ind_word=$(echo ${random_word:$x:1} | tr '[a-z]' '[A-Z]' ) - new_word=$( echo ${random_word:0:$x}$ind_word${random_word:$x+1:$word_length} ) - # Replace word - random_word=$new_word - - # echo "After: $random_word" - - done -fi - -# Create first random word in candy.ttf -convert -background white -fill black -font Helvetica -size 256x128 -gravity center label:$random_word x.jpg; - -# Create of Another text -convert -background white -fill black -font ../styles/RemachineScript_PERSONAL_USE_ONLY.ttf -pointsize 132 -size 256x128 -gravity center label:$random_word y.jpg; - -ii=$(expr ${i} + '0') - -# For cycle gan make 2 more repo to x,y seprately -cp x.jpg ../$2A/$ii.jpg -cp y.jpg ../$2B/$ii.jpg -# Merge horizontally -convert +append x.jpg y.jpg $(echo $ii.jpg) -done - -rm x.jpg y.jpg -cd .. \ No newline at end of file diff --git a/pip_packages b/pip_packages deleted file mode 100644 index 064a5614..00000000 --- a/pip_packages +++ /dev/null @@ -1,148 +0,0 @@ -absl-py==0.1.10 -appnope==0.1.0 -apturl==0.5.2 -astor==0.6.2 -backports-abc==0.4 -backports.ssl-match-hostname==3.5.0.1 -beautifulsoup4==4.6.0 -bleach==1.5.0 -blinker==1.3 -Brlapi==0.6.4 -certifi==2015.11.20.1 -chardet==2.3.0 -checkbox-support==0.22 -click==6.7 -command-not-found==0.3 -cryptography==1.2.3 -cycler==0.10.0 -Cython==0.25.2 -decorator==4.2.1 -defer==1.0.6 -entrypoints==0.2.3 -feedparser==5.1.3 -Flask==0.12.2 -Flask-Mobility==0.1.1 -future==0.16.0 -gast==0.2.0 -gnureadline==6.3.3 -grpcio==1.10.0 -guacamole==0.9.2 -h5py==2.7.0 -html5lib==0.9999999 -httplib2==0.9.1 -idna==2.0 -ipykernel==4.8.2 -ipython==6.2.1 -ipython-genutils==0.2.0 -ipywidgets==7.1.2 -itsdangerous==0.24 -jedi==0.11.1 -Jinja2==2.10 -jsonschema==2.6.0 -jupyter==1.0.0 -jupyter-client==5.2.3 -jupyter-console==5.2.0 -jupyter-core==4.4.0 -Keras==2.1.4 -language-selector==0.1 -louis==2.6.4 -lxml==3.5.0 -Mako==1.0.3 -Markdown==2.6.11 -MarkupSafe==1.0 -matlab-kernel==0.15.0 -matplotlib==2.0.0 -metakernel==0.20.14 -mistune==0.8.3 -mosspy==1.0.5 -nbconvert==5.3.1 -nbformat==4.4.0 -nltk==3.2.2 -notebook==5.4.1 -numpy==1.14.2 -oauthlib==1.0.3 -onboard==1.2.0 -padme==1.1.1 -pandas==0.22.0 -pandocfilters==1.4.2 -parso==0.1.1 -path.py==8.1.2 -pbr==3.1.1 -pexpect==4.4.0 -pickleshare==0.7.4 -Pillow==3.0.0 -plainbox==0.25 -prettytable==0.7.2 -prompt-toolkit==1.0.15 -protobuf==3.5.1 -ptyprocess==0.5.2 -pyasn1==0.1.9 -pycups==1.9.73 -pycurl==7.43.0 -Pygments==2.2.0 -pygobject==3.20.0 -PyJWT==1.3.0 -pymatbridge==0.5.2 -pyparsing==2.0.7 -python-apt==1.1.0b1+ubuntu0.16.4.1 -python-dateutil==2.7.0 -python-debian==0.1.27 -python-systemd==231 -pytz==2015.7 -pyxdg==0.25 -PyYAML==3.12 -pyzmq==17.0.0 -qtconsole==4.3.1 -reportlab==3.3.0 -requests==2.9.1 -scikit-learn==0.19.1 -scipy==0.19.0 -screen-resolution-extra==0.0.0 -seaborn==0.8.1 -Send2Trash==1.5.0 -sessioninstaller==0.0.0 -simplegeneric==0.8.1 -singledispatch==3.4.0.3 -six==1.11.0 -stevedore==1.28.0 -style==1.1.0 -system-service==0.3 -tensorboard==1.6.0 -tensorflow==1.5.0 -tensorflow-gpu==1.6.0 -tensorflow-tensorboard==1.5.1 -termcolor==1.1.0 -terminado==0.8.1 -testpath==0.3.1 -tornado==5.0.1 -traitlets==4.3.2 -ubuntu-drivers-common==0.0.0 -ufw==0.35 -unattended-upgrades==0.1 -unity-scope-calculator==0.1 -unity-scope-chromiumbookmarks==0.1 -unity-scope-colourlovers==0.1 -unity-scope-devhelp==0.1 -unity-scope-firefoxbookmarks==0.1 -unity-scope-gdrive==0.7 -unity-scope-manpages==0.1 -unity-scope-openclipart==0.1 -unity-scope-texdoc==0.1 -unity-scope-tomboy==0.1 -unity-scope-virtualbox==0.1 -unity-scope-yelp==0.1 -unity-scope-zotero==0.1 -unity-tweak-tool==0.0.7 -update==0.0.1 -urllib3==1.13.1 -usb-creator==0.3.0 -virtualenv==15.1.0 -virtualenv-clone==0.2.6 -virtualenvwrapper==4.8.2 -wcwidth==0.1.7 -webencodings==0.5.1 -Werkzeug==0.14.1 -widgetsnbextension==3.1.4 -xdiagnose==3.8.4.1 -xkit==0.0.0 -XlsxWriter==0.7.3 diff --git a/repo.keys b/repo.keys deleted file mode 100644 index 8eb4bfc5..00000000 --- a/repo.keys +++ /dev/null @@ -1,490 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -mQGiBEFEnz8RBAC7LstGsKD7McXZgd58oN68KquARLBl6rjA2vdhwl77KkPPOr3O -YeSBH/voUsqausJfDNuTNivOfwceDe50lbhq52ODj4Mx9Jg+4aHn9fmRkIk41i2J -3hZiIGPACY/FsSlRq1AhBH2wZG1lQ45W/p77AeARRehYKJP9HY+1h/uihwCgrVE2 -VzACJLuZWHbDsPoJaNQjiFcEAKbUF1rMyjd1xJM7bZeXbs8c+ohUo/ywSI/OIr8n -OfUswy08tsCof1KU0JBGLBCn0lHAYkAAcSr2pQ+k/odwdLQSjgm/JcUbi2ll16Wy -7qFbUAUJ5xO+iP61vL3z4pJGcK1pMH6kBLA4CPBchJU/hh3f7vtX2oFdWw8tWqvm -m/W7BACE7h0p86OP2G3ZJBjNYNQTK1LFYa+3G0spsVi9wl+Ih49ImPbSsUc2CSMA -fDlGpYU8FuUKCgQnS3UZz6e0NwrHbZTHBy0ksRwT9jf7qSAEKEN2ECxfwR5i1dU+ -Yi4owkqGPhTLAbwkYdZZMcqfGgTXbiU4uy8DzMH/VhqP5wxdwbQ7VWJ1bnR1IEFy -Y2hpdmUgQXV0b21hdGljIFNpZ25pbmcgS2V5IDxmdHBtYXN0ZXJAdWJ1bnR1LmNv -bT6IXgQTEQIAHgUCQUSfPwIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBAl26v -Q30FtSTNAJ9TwRBI9/dXHqsyx5LkWrPxyO2H7wCfXDY77HnwSK3tTqJzC4m6KuDd -RheJAhwEEwECAAYFAkFRZ98ACgkQ18PxMasqkfV9whAAj5sSzTHDIdYCmbZcumTH -limqS88m+0He6jkG5j6DjQq/xGWg7B/svG+mPCE4K/zYG3CA0G0lTgJJKQg6gcUg -oQpaiK22gLG5tjVOQRRaExu+FNKF9kvSYFbEwpn0OESsRPjrdS2RYpGjY+DLHPaB -06Y/hQvMSCh67ZeDmLLTwQFzF0RAUHtwU+tU/gnvrk7kk/yPDqtj53J6zuAf86ZX -GRlmJCTDYJ/yXoYlm4sz0E1XANrdwtUGic0PF1gJIe7ZAnqMVvRGCxArNT1th83w -uppjI4/rGrFttbQUPb0cXyXhSmNauRMiiX/lrjqjouk9DX8CyVQG/mTgjrKLAMBZ -OJ/Im3D33jOdEWIaaVAVOmOej3S8s33zcWAUYbpqg+10i3O4SfVYH88tmEnmX3mq -Y21B7fkHHOVXF/4/sCzft6Ek6E57vIh0i7PjnrTWBO2/dl7zJyZZo7ty4f69B1xU -ZNClBZPXgYWmh68z5SgyfY5/N/CmfnsH6u5vHSRpm039Nr4IFNREkamkXl2GCPbA -rkZIkqdGdrX1EfWw/fsndHqHKwrPGHXIWWboZT1ZDx48P+825fVMg4N2cr87Mv1K -7E/hgHjxJ6eeciJFic4GT199DZha+1Gs7FRXvCa+sOGP/9JuZ+/S+Tv71sIPmRqD -rr6bSBH/E6yBKz7jv42GO8iIRgQQEQIABgUCQ76shgAKCRDohqckZfvHogOmAKCQ -SaKL15jq0TvjWWrcjvQvODdgMgCfdkb3Jbsg5liM0edJohWfyhzfGIGIRgQQEQIA -BgUCQ/tL4QAKCRDk7WqA+zgH23hVAJ9WpyWCnJIHNQVHH4/V8kqaptbLQwCfQN5/ -kutAyXprjtU+W2stn2HV4pKIRgQQEQIABgUCRMoo7AAKCRD+VG3tGS5BXGKuAJ9c -XxY6TqxwIt6kTIShyykHuia7KgCdHYYlu+akh8PYBAlF4RvGlIkqmyiIRgQQEQIA -BgUCRQfC6gAKCRBbGMCBbDPfCDsGAKCO313nAlhu/FggyId7IG8yXtCa2QCguWI6 -WCp0v4jyAIA2LK/zKbNlDcCIRgQQEQIABgUCRRvO4AAKCRDgL5ttNArtqI0LAJ4i -vwtgU9g6hn6TsbejzabpS7JLAACeLKBkLfPymJXlbpCjzsav9qJdZhGIRgQQEQIA -BgUCRRvPMAAKCRCRA7V5h+SGXz8OAJ0aus80uJDxtlflUDD1B1iEcO9EMQCglMfy -ys5abo/h6ZicTp2WIhp9IBCIRgQQEQIABgUCRRvPQgAKCRALOQhgy6dmGRaTAJwJ -FCgDskBzIeqCEORLAtLaBJCLngCeJzjzf4A8G1ZhS39Y/Yk7LQYB3aGIRgQQEQIA -BgUCRRvPYAAKCRAurJaQpVDnhKIiAKDaziS1x3SZIOS8p4iVGVY43KYO7ACfdevW -FB3BLbmLKB9xsrH00safNJWIRgQQEQIABgUCRWfafAAKCRCV4getfktcl1R8AJ4x -8HI/GPIcpHNuJ8PUlJKvjSOY1QCeN8glquCHP7d9XyBe4p41o0WdbAqIRgQQEQIA -BgUCRaABKQAKCRBZgbnSh0vryCoKAJ9/KYHPBGwGuR4WR8ZWujLqIue92ACfVk5G -hTCj8sjkC2835BOmWdPia3yIRgQQEQIABgUCRbQdHQAKCRB9RtY87eO1ZT4AAJ9q -OBuspkVxj9ewlJtFPZfzKkRypACeM/WVpw+2rz7UHVAGXYZpWnqjmwaIRgQQEQIA -BgUCRfkxvwAKCRA+O+Dt/wMVgO5fAKDEdUwaGl6sd8pS2N5f+Fdm25EWQQCdE8p9 -Fsq+Q2lA2m3sbEgH3ga+zPGIRgQQEQIABgUCRq72nQAKCRD23TMCEPpM0XyeAJ9C -GZ1MNHUYsJv2ZdpzPqdc23EW6ACdEDfk5MnkAYX2i9eoEParoMRNcx+IRgQTEQIA -BgUCQp2FvgAKCRAwa1VExpE89g4LAJ9TY9lyD3u8eXXiVE11zw20lvIongCfUfLh -OE+oLMmUAwoCsCpVTxNhnRuIRgQTEQIABgUCQp2cvwAKCRBQ1yY84R14E1z9AKCG -2I2enXp7roBiIosVi76hx4Dd9gCgs21hGpvQqouLs6Oz9TbQ4COqrT+ISQQQEQIA -CQUCRZtwwAIHAAAKCRAHjSWNsiCtxiKBAJ9KL7LtkZiVNcj8kJJ9u4+QX00LsACg -hJVJpjXC5Q4EeGfyzm4MICf2MVqJAhwEEAECAAYFAkc0xpUACgkQC/uEfz8nL1sU -rBAAsLGXDeZ/QHyYfWHPrph+ALC94xmblfSu8Q/BRD09VyPimnoRtSNHZwwbTp38 -ysVU9G9mo3lgQ07HQP6XxoEDrw42sLUpnECUMptr1e66hlyvk4urMVjGEs4FCpA3 -wRuDUYuI4McpB1mRzYqJEYZ2bGl9MWN+FGEE6oFHCvJUUAEDVj7enCN1+ouKw+Wf -giki1BqPWGofTrj2G/st8hn2LhBgomCDtnb14gRSFHvINO+dDr96QjVXGg9+WSr2 -iIVeIHS8QWWOpYwgit16DK0SgXxlIMXMkcNpDosak639DF6wwRTvVoMGcr5OEbtU -I23GOdyX9RTrWCECmUctat9vprdx6e0nbYbt9jYheVBzTCMGCtc1pVSuNcsPBU3F -KZlMq6yH9D7POQPHamKcZdRhGKtR0vQadKt3bMZQP231pUMdCp9ayIMjLjjX7EDo -FO6iCqeuuqBa0quiz7Z6nAvTWkGHHXjd555iIrkTz1fgses05P9BHkfPmnOH55b3 -3vyopz53A74Vz6SutOUTQi0MaXAYNsX0A55bjNb3fm6LuuLAkOZAR1wfSM1Ecb5r -yZP+9kF6o9zSGcQ2sjG3b7pGFtQztwzXKNUCOI4Iv932IeD9O95w5omXZVahTGQ8 -NesFHdmEwq69aEGOq3E3q7Qz1pAgZsj2N+6LmE3Ln2rudKW5Ag0EQUSfRxAIAMgl -vR9L60xR65i2QG4k2CnqZhmRUaTySxwOlNqKWtokUpzf8WmqA383uRLO8W9Tee1a -F7KEMEUXgFiP7nns0kroKGLlcLbC+nEzkv51ao6Lcr5dWr0817LmlvCl2N1KeQDk -pHIAiS0LTjuEFY1yosi2ECiOan6sgcLaVqJVbEUeIaYJOiZ8O1INTAGGdpVoSPvg -kuZVKhP2uMIhYq3qgs6sB5SshEaKAGYIiH3lZ6UJUIVEuyumxpNPqkJ1Jkpo4SxI -wy8KYiQ9Uo1NPP8bmvyGGaeWbRObLPHCO+iqxHxMiE4xX08sVizxA1YLw9iwtdNP -OWkQsM9rn8W/gieH0SsAAwYIAMLzDICy2IA1wcmf5XPpg4JBFuMjeg8pIuaQZMf/ -MO2u+RlOVrIXPVFtYOpxQR9C1gCg+Blg2qQXBNw19cNT2EtSGi0HtycTww2xnIOn -aLOzq/eI/LnakdAMclaTVbNltraepkoRFE4Exvuq/tCdzssotnmAha1tzGf+O3Qy -xkIBJ6zHFTNCREGBPYi/Pe9iviWqNAIr3SPhlw7STFrVDgpne9VdpOZb3nVYYQHG -6iwvVwzrE23+84RMFENq4Dhyx9L8R6+PMt347uT8dB03PXMovOpwXX06zMgfGwF6 -0TZsmHqun/E3gE46YiME26rmUX5KSNTm9N2IZA8jz/sFXz2ISQQYEQIACQUCQUSf -RwIbDAAKCRBAl26vQ30FtdxYAJsFjU+xbex7gevyGQ2/mhqidES4MwCggqQyo+w1 -Twx6DKLF+3rF5nf1F3SZAg0ET62BeAEQAN+IvUo0UdPgfgPDQ5H0t6ZHx5uwWX5v -0TjgikaGBZgO5+PSBoz9QnVOLdsd9FPf1VVnpy/U/iZDLRucAoVtjP/Cj4aHOMFa -2fp1OFi/uf4ovxum1IJeCDVrp6fx0IIgD+nC1LZS3+DgS7pnjrt29g2UyAKq+D6m -soitd/mJuKjjyPcAW93V0MmXZwd/K443fn/ze9cpfPQU+iFDs3uQ98j6quUYFgZY -XML9AQaN7frRDZij6t8yjIMReY+yhlWp/sQTyCN+deJGqbP8GDlhBvluCcZssaId -a2NL4AIh0tSr+H6OVKnnuPDyhCS0yHbFUxfi60MzRQQ15mc+WVUlKVHRv5mZnPul -p5JqvxjGfjCw2UvsZlulbkD9aZyZZ+4xig+EGjkWrVXb+yIo1TdQq5/Uof5fSnWh -nig5xnZtLRmHdgQbwhBx70F96urhAwqx6Rwb0gpLpYEhTsHBoSUjYgsPSBLC7wrO -81IR4gmFhKwEgTOtbEgFeg3YAL08KqpeRaUjlev/zpFaWUHcKyg/AR87wIslbYuV -dN6f8WSrjBP5ql2Ed6JaJKyr8nk4R9/SsocFDd8rt/JW5U2skVvYKiloEvILFO6m -/GzXraONQ2im3Rzs6o0Gg+hShUUDFRKl4TADDrGszm9E7IsxJ6H9idO5HLxa+JFq -lkJijqdpMJjnABEBAAG0QlVidW50dSBBcmNoaXZlIEF1dG9tYXRpYyBTaWduaW5n -IEtleSAoMjAxMikgPGZ0cG1hc3RlckB1YnVudHUuY29tPokCOAQTAQIAIgUCT62B -eAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQO0/mrMCyHzJdfhAAkdR0 -rp5gzIlysU/fIpe1RhAylodEz9+Wipm04WGWZwtUyAE06vR4u8FTQlxnJmkcy9ly -JMMExZfwi0JhWNF6N/QrSU+8cdEZoTu3okdVQJ7Oc1sMyc49hXCVUl1ks5ro+YTl -ZdVemTy5MDy+bpE7atLbe8TtTSlCVX7UZVcxYfhkuNpCz9ObvB29HF6pNu184R4c -YuOayiHR6sd/MxXjAD/1mrzpbO4lLUfFdHo5gMLf9pBfsLFhPUxDETD885uce2SX -c9ExZ1Nbt9JC26URfOmvb8kJ6/ox9zxTLRoPeOeD1vJWT0al00USMaBpSqOrJmiy -/ABnj92ZGOYwSJtd41QYLwd5YLdY5VXwv8OID6aImXA+/A+IDVm4oEjkDxUXSs0d -btBWwbyRD48MeBF2yaGnNJGDKQ3U+ArpTFJwpfwuo0oK0qm4Q8CmRrsVDW7gGhkq -OOkGFjVHhOl8WQwh7upbxd+qho/32kQPfFdyHbMVE0eK00mv7JAkfjP+j7ZS+dMD -aeJRMeUVIIGhTUy9KrU3YnepTqhHZw5gnhnGpbIKh5BHXHxo+cuVyfiV7odTtOhx -hsdoiZwi3uqcbg2LQ5Y/iCISGM6mDG2taCXfqZ25++uLDJr4QdfOffoS9D075ubd -/JquyeE97TWuWxHGoGIrUk7D+DgaelfyIsYRfVWJAhwEEAEIAAYFAk+tilwACgkQ -OTWH2X2GUAu10w//X2Vlad44IUQV2wrojV+JRKuuyL5FF5/EZPlXBRZNBgivtTBM -ksY+P4aQtB7Z14SPW/6aZpk2xvzchAkqhxBujbU5kCvdS/gbord8DCPvMTdX7aTW -JkoMf/cx8eln3H7WxRA9wL5jQ6HSNbDYYY8KViMvA/tYZ6BrIJ8916OUA5F66UqL -aB76aSg0zZmbUCkDWrXmsdJPlC8inVapqsrTTdA8AGt4NjfvN98qJDBOj+NTOdxO -VMWVOEtaq+HYfuD6vquOsOHL/K0H6U44AqnSowcbV6i+pDqWlpHH43RRH5sfj5Yw -ECDvnq16v/eH9n3ACkg+Cl0D8GTEVC73fYluF5mr7xZdDdfC9eP89WSpGvfM0Axg -pVxIgVDSECF3ZIrxevMpQw88OoMXqVQDiG/dpTSSYuJYmJsVYbGUTksulI/DLcR3 -9tK/FjET44T6yR0HeI+oc3sYcuKVMdexFMRc8sw31B8oYpeIsUZecstzuEwsVu2h -flR1tpoQrv6sSQhzXNnPD2iuB58fahdBJ6G6HDOZCl+YYz/MTBRKZt5nBdbza3F5 -oZGf9Dkx8Ah6rEEotJPou/xI1+kj5/W9Y0Nl5FRPDcXzJYuuWXxrlEocO+creNfN -5Px0tk8iMZQszIWbyvdTZ2MqEitQmON3z1AzupCc0V1TstHdgbR7NPmkm76JAhwE -EAECAAYFAk+tiWIACgkQC/uEfz8nL1tnahAApP6U3tEciHCnP5O5OsElIYViEu6v -lP0WDXWYgptD2F1UwBL1c719X8fg52iLPr6dxtYi7zOc+yprOI+hIS6CPgKsF9XM -OdwPM456K8kjrrK6J6Sznc/jyi6AaAzcbZpMUCezyFcKBJUFl3gPExDBH3D0+a5e -AaexUhKGyf1Os3P5Q5KlNfYXs8bBP685byEzpbQalpSEW41W+LgcAZxbceBwPL8q -4pTknMsp1RucZ7Lk34e1xNir4ptEEcKl8bqk82NEhV2X9fpBwgUNpQ7bgvW1hOe+ -B6FCeTPcbIuR6qKqbC5vuxNdiaFRK3N08zY1cZs9VAY1e7m3K+68sBz4lOufgAMi -MMPfmhj/i2L4twKS7IO7NTwRZwxsb9CoXdUfZtQjSk/hMUiR4taQw7uJ04I5/r6e -29BoZrcGudGz0J6YMppXJbCM0kRduhLz4vAGlaY3D+J1aAvN/03tcXX4Z+sXrUV5 -hxyW1wHVfwzgSUj8JyG+Tnb44byPpRJ6YI4vU5KKttiq+PxSuhBptVTB73RNmtug -4vTpDZ095fR8EiTzftRdEMmnMph7Fm9aD2SDsht/0xi6h23luQb7qyXCZs3tbUjh -QCCsiPgSGUT3CyZ2wxzZ41eToM4KU3yyx5c/Hj3ScvrbdJBLHi1tim6TNoRdERc5 -BPa5jkYe8NUy/tuJAhwEEAECAAYFAk+tipcACgkQ18PxMasqkfWskBAAmv4B90tb -mgH3kjry1khhXC+pnjXBTymR/yJe42ZPgLbrB2PbTiNCXzqJImV/wSK6qzDMPR4G -tj9A084voAFwq+E7gqW5pGJQuu5pcjuh2SYgMC3LmBh7TicPsTfC/nmVA5OtPu7t -Bmd/L//Jj7dDDgRrox5J4Zb6zdESmYA9KX6JpaSpiKjH+2YJA5AkrSPPFNxjIdwv -Og1on4ioA1lQzxREKttFqlFubdfED0V4PRmWDvs0YJnJPWnDpeQbuQuUTgG9SbNL -90hCTHyqekmFyEtDbSXGpwFpPVu5FPGS29+VY95WE/LQwuXvaX8F2GXLbVhxBuZs -KWRtYwaAty1uo3bkfAfwujqC5ST2haWq+25c4QjfWVmBJ6y2mwLP8m+V9i7J68Fr -feytShFMU2dmyEY3ORPbQZeOfHtYNvqYfHBykBkUIILaS18PB379TSZTr7TbNgdv -Lo4iNEecC9sIaHPnUR098TfrZbcJjTbWS0SC73FikgY59ESdyuOjQCg7CqhZCESg -sbeKEXwsxSvJU1pzR7CysZjuDEUKc/5oe1fNpryYxbx2RaA3CLpF8l+mGuAeR2Ap -WMq6SQipGtmsOgPk7sDXyhNveIysEod1JVmnSJymYAdvR10E2Vj3O6ftqS4GtXMz -loq6jbWX9Cz3PdQrmTgON96B50UKWqmfftuZAg0ET62OaAEQALukorvy3z0Nbua8 -yhKCJJwt880Xz9NIXfzSKzSEVEvd06ZxcR82xfbqO2/xt2++2QSUHV8/A6e2apIC -yss65RFVDoZLEfsgNTlAV9pMiy520tHlhOULdm45M5vUdYQrbp8NFe4haOEUNckf -cou/6tKurT7Htm0f74IerlclaTtVSH/BZwbFl5+zv7UdOK/KaGNcI7BC+puXNnkw -B5z2LhAhfGSpfUdjuvLEZV2OP2UCk6ehTkRxJivTxybvFASCt0MsBkVDENgEsO5X -oTqMoR8B/Bkg1IR7g5ybza+0IXkrQeLCEVTT2TLbKiBsy5NOLZ/yJs3xJtuFkMmU -M93ZmSSmwo18gAuY6I+Eca9caa2DoV3NFQ5IaKtKby1xqSlL53T8gSVsPjneySzG -DqzdxOztD4+51pxzJDQGpq0yfOZ/EJU6i1PrmRWebPY/7hDSBFJD9mL0ifP46vNb -G2fr9N3D4UxTC8FxzFbWvzyTq5UvPbeNb/yM67CdSngkqZm1r9TZRkpPI/Ku9NiG -n/MrffYESfGJFjhl9CMDgjCXDTSXilgEMstzpMUm0tsO/zn1QKKxdrwy1ZhauUzd -h8YWz2TVZ6Ywvy7v2DYMryDdU+QP3hDlqeq58Qabvgr+R46ayzxxCgFf1U8UylLW -YUJP7ZR0Y/RS8yUANy3RoWcDC1v1ABEBAAG0QVVidW50dSBDRCBJbWFnZSBBdXRv -bWF0aWMgU2lnbmluZyBLZXkgKDIwMTIpIDxjZGltYWdlQHVidW50dS5jb20+iQI3 -BBMBCgAhBQJPrY5oAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJENlKo/Dv -4hCSSEAQAImNlle4BpsysLj1nnYfLBVmKkmChXm58yLYtBgyTIYpVBD8TviVSNxw -yZtDiPTSKFNgH4X+Lb0DF9q8meVKlaCbCM87hhjmO+ihSJdCZUdfXSgzXDf5j3BJ -yZ5RjciFO3CIVoEmvpNntG85OD+ltDQa/PE2WRKhu6oUJnTbeZyXZjs6RjU9mDGI -tp8PpHHY7+ByVA+zhh8ejxspEDijXTvTacTxgT52LEiABDDrtPGGrmJ03Gxam50q -r0nV8uCcTPuL0AlQ5/XayD1ftm+ldndC8xXmI68sDgNEu/0cjHLPvRep5qRL67N8 -pe4IzOF1RMhv+00AI0Hfv6t4ip0+zJQXe3FXJZovWMyRGy/rXvIoCJi883AwNG+t -sqInghyd3i0/OarPkcEVTJQuezcnMk2OmAoK8saFWr6VWx2kyWlDEQbn9uHMmAHW -OshuRw5J+dDXLQa/0Ii16X7WrQEcyfR09VZo18pgUazPiKBb66P/8LT3+C0Yybvw -9B+OoShHaP9Nqb+2a5zFIrffXJ+blqDYJBgYLduzB8gj7gRqdf1039Ebf/Z2xLJi -u5alMhAbpdrv4Bm1gEMRc1ii+B0m1dbJS1bRftHq8iOHUdh6vd1HqK8n6r9tYZjj -nMd40E1TfeGWeXEQQ2J/dFn+P/DdKMau1JArr2Zo1Hqierj3Z77riQIcBBABAgAG -BQJPrZIZAAoJEAv7hH8/Jy9brPYQAIjfp78AfEylAgrTWgC4LOOwHMu8Km02Nnv/ -bB/aNaEK+lYUUmzVMlx8HjzwYThbuRpRLjEMBJ/k7rIUNKP+UknvBY+0E1GILB0r -PW1VCQZaLFMNXXce0EBsP7x6R2KRzI5HbYEujHU7v1aGBH4XmVfJIWtF0Jg9OU0B -8UzWoIfBpfQ7bZRRJRzbb7tuOgDdxhqMMHiBADl9jaGO4mSV0TB+uJVd9KRA3Fim -Vlq6qA/MzcM2tx1sZbkRx6N3Z/qg8SgGR64gmpSw9YEtAtKpaDqdjbHciBRiEmre -NQ+bQN0Lqv25gGcv2q66nBVAk708s7LXv9uIowCmBIsB04MwxOoH+zqJ6vJNcL5y -LOnrA4tR3wq2gdU/9dt6dAfFbsMI4/TqsSM9+ucokbAjcNmwKyodmeF87UxKc/YJ -flG9beo088WsLxYsDjYhOhqZ8hs7PsC0ZbGtGnpdBcCkZ8E3jOoibGHmyjpqU12D -CNOFz1kec/tWhjBh+Rn5p1JEPU0zAHXFaQxplg0Ur/kz3YuRYW9tei/BMTZiZc7F -Kk12zeRTjg7sfAXEEn3K5Vjw9HgHXWdsFb8P/XhU3IXafdVTrg7OfMLbuf5IBc5J -+Jx94dQ7eNIkbh0h8Ct8rjAEoygxVbqR+MFcQfN3XyAJK/M9ROA8MxXZxkpF/Ls9 -25oWjPouiQIcBBABCAAGBQJPrabzAAoJEDk1h9l9hlALJx0P/0ZuOca5YyJGI+/w -L6U4rx3pf+VOXKbY0N6nB/FW7gelGuww8u2rPpGea4qmWtBQznyjvywq7AsbFk9w -v3QoBKrzFsT3xsPKEgxmA6DoOZwunI7jbRr2mtGW/rMVv+oXZ0L9AQ24rTXR1MIk -Dmplt5jHImaX6x/+3soewoOCmYC3sq3u5PAMQ6Am+fG4CHrnZAubU2zmwz7+PMwj -C940TSVkNJblcVkDuwTsS+wuv4SBtutsszD1iqXpUE3wVv5DywiaVR6LFJnv7Oqf -5j/MqzavwVkR0VhdQcMAxWfxqd8PVDVOCxQWcZc1uwWAoBQnQxYQVPov7GvMh1j0 -mDCGTqQL0jQfZCerTT9M4tqwQONTaW6pO7Kvg5nLo0QUtbjittsoDvYgLvfl8fT3 -6sF8Ui6ySsXCI7Y28l2QYcZutNgfH8yk508h1deePwcPTSW14k4xZqrfssFrhQ+z -QaFxhAq/V7gJ2jGtzEd0Zphu62r1J21KkHmwwkqAk00T6SgxDa5WtOVS5HGW6mcs -w6mHbv2jwEqw5bxscgGd4pKJsHltQz4GpqpTsgvWqFhCb5F/oDJR5qNWLNKj9qLW -D+acNxR/yTewdm6o2ThMw6lWP2kvwMh4gu2Koyf5J8tLQqmAyDGqClGhUzLe0j6S -T0b/liWNulFbWjFeA7UPEqEDj30JiQIcBBABCgAGBQJPrho5AAoJEFdZ81ABqkpk -8ocP/3tZp7OSYC0TF+VU1wBFvpSad9IPz59bDEVxHnKMj0H0RiKsVuHiXeGeCeBU -7OeawYt2oaPiKwNwLpWmj6rjqcedtvU9Yz5nsDLsW3Bf2Vy3RJCLCILk/UJdFUzl -nwTuHdrovjYefpZisUwsPlEHtNMAs2reWcFBLDJK0UrvgSAEcEPvs+CwAGYZXdF1 -7krMNaev8Y5xNZjOduWIO2HXwdymRtlyZk6WXTPAg10Qm7FIvQxnJl8VHRSYSOaW -fXEeSkZ7ZibVnMTuwMF3flQLmG93jwDrTOZAfDexrJbh/nZXHmh28UcoJkDbQhKA -Lf2VLuhfcUrCGaYGbo1mabr8WpXUckfy1ggCHqsO/K1XcsSkfNLkchgNOMRKkc1u -O1ZwSwGt7mI4rIq3ulcaPCrWzV2Pa6P1NfK0CvcH/eZR7/NHdDCWOhKn1EF/nnxj -NxdggeP3luBK0szLt62SLhRjTx5oBPMSaJwB8wj47iSEDUbtgA9utVALTjF912KU -sgZynceroXj0mgup46wP+sZboFUOJFlufplPlIlBfXp9vAnn+SwqG3YyCOZUioyL -k8Pp0EO1RRtq9hqgL5DpmHfGNO5IY7YMF+h0hr/EMv1I3P4upJs3RRHlDgj/soe2 -DWKvT0dhQ8SPL5mWgEFrtnJr6WAGiBBLn31wCGzdETtgEHxHmQGiBEHUUngRBACh -nb3mDLFxN/2A/2m2VdF4VduvwWqdzD2AXanEBud8G5HiPYxry+nqu5xaiTpcwKxt -jgCENd8dhmNA/uDmuoMBlZa7xLTdeGixdmj+VOce7fa6Guq1UOhDe/UtjDbRp9bL -BhW5qDewL0RLJ1VElnl7rx1Acty9KUz3qQWtIzc4NwCgn/5beM2PUbQMHv8CTWf3 -nYWEFf8EAJSnXbfe1k8R6B+iSqralm7JJPpFRuCsI5Katcw1lrZW1Nm1KGTMy2yz -i25DRQgQmxbhDgrjAwc+WzVLipXnNfUY1/E7XskwZeIw+TZ+jBRJYBRSW0u4vz4b -qe/8IoRd9pVHO5By1o5wAi+WnS/2h//QYEmWlULbo6TBentTmS7GA/9iwKv8F/nF -rodffBgw4LSZnNV3dbZGIr5h/ncPMS1g+2QVchsrJyzVjOoKfO4Gx5/h3Q8keCPa -Vs/7Dmq8LOIGUfZjG5MCn5rCHHMSOy3x4cU3xd0j/VipJl/boF+E8Hll+s87W2Rx -yfmuSb+BKMCbobac+x664t2R3iUqHQsZQbQ6VWJ1bnR1IENEIEltYWdlIEF1dG9t -YXRpYyBTaWduaW5nIEtleSA8Y2RpbWFnZUB1YnVudHUuY29tPoheBBMRAgAeBQJB -1FJ4AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEEYYFDP7t1RRrtQAn3lQd/AW -EQgasJhvSuaEKE3dX3WjAJwIQPr+zjqUg0b2jRvvHqSviXXU74hGBBMRAgAGBQJB -1KChAAoJEPbdMwIQ+kzR784AoIZy8LRoinb6q2Wf+pD6Hqi7IMMoAJ40CFDbgnNi -ynFZ3GR2oJN9yHIf5YhGBBARAgAGBQJEktmNAAoJEILX1YqwqGAr3BQAmgMkTLx3 -nl6RT2gnpivlVbTLLp5LAJ9h457Bn5ltNr1VLXGu3KZC//M9g4hGBBARAgAGBQJE -lC+xAAoJEDofCI5h4RFTt4IAoJD/UQUco5ooL80k9GouG2zqvHRRAJ40YXoS/epf -8LgVbkPb4dZjemzJL4hGBBARAgAGBQJFB8KdAAoJEFsYwIFsM98InFwAmwSyPe3r -H1NM354zmWVhOXjb1JocAKDYTgJx5GevcIrcrB3ocGZb3I12H4hGBBARAgAGBQJF -oAF5AAoJEFmBudKHS+vIpowAoIGO+EUF5Xf1hs2baKO5mZ37H0oHAJ4vpAexQJY+ -YHDqGWNkHsvIOWxpZohGBBARAgAGBQJF939rAAoJEDxjyj+gs+iL5NcAni//R3GS -b/5zCcpovhc35J3IEbVnAKCOs+PR2FkkipdYVC/9oRBMcPA5aohJBBARAgAJBQJE -gFKZAgcAAAoJEFXlrhuO6QQREqUAoIqmXetBaIDlQEwllfH0s0Q+du0+AKCutoEk -UCdcTw0quWBjOCPZ6alwP4hJBBARAgAJBQJEgcJmAgcAAAoJEJnmBLRVGFggKKgA -oIYKZVWg8f2dVKm/J1NfNMa3xL7GAJ0c8M21PV5JjrN8mxqVi6cnxLEA3YhJBBAR -AgAJBQJFm3DoAgcAAAoJEAeNJY2yIK3G294AnjKonrxlKETwr/LyArS0bBNv3tmR -AJ4wrnEvpFCBgMpOsD3bQ6VEsHzraIjcBBABAgAGBQJDb2QeAAoJENHZUgQJ6aHV -1A0GALTFLl9rphqzqocobTkHOuORP8b/coYfY8H9sTZGGRV5YyWKRXVcf9dvAHxx -XFoFSmDnCJL2IQMvwXDCtRWB3DW83cHj4s066RLvdM3Bb7ozC8MlCiDqQMJ34ui7 -phVLb3ewkacAwAujzmIzJ9tFijgFV9F/vd0OeYZ6Z500U9Cczz5H7/cwCGV/nTMK -1298m5t0ULkidupe6+U0zgWC52Wr7VBQODCXnuEJ4qwZngBNLd2vHL247soTtYhh -wW9v9okBHAQQAQIABgUCROOo9gAKCRBpZyJzLMORIBo2B/4/XhrNUZwzu/SsFV/E -9o31WSzOjYwpB1GsyrxGSIXCl9oGq2NRWbenl5W2J9gnYsmU5dniz94c4eQx0gc5 -cVm1QbFlHTaTVxDMrcHP/348LIWxUNrvpowyO44Yc0W8UtiNdzKcszsVdK6ksKWr -YY7hE/pHhE8Lkiz26v9KRZvgtM08zlD3a6kMJRKO+7YlrQ5yHMyIl5q40AZpY/6r -2qpWwfQgOdr+5qJt8XVmngMGpaj06nsh+ZLOYGuzFYRqa8rGwa4sNMRPwZe+2p88 -BKUn611DQGPi6m2Vu+UqfrsaJj7XBu398HTThOxhJnoImX2T+RSEEHiE12aH7nPd -666riQEcBBABAgAGBQJE47ItAAoJEGlnInMsw5EgnroIAIN8Q03TbUFG343G0cSs -t++9xpNWj327nFEUa/80dhnBqoJjwFKs5tyvMaX2+YvCwnBqoTp0dPe85iVeaSYD -t459A9szGuLW0CU+nXbES9jOJ0G2arl+Qd5jsNkihiQYyMjZ93675WPu2I+4KmNZ -PfWlE4B7zeMG4fUbHRjujOYrmzHujeIpSDeZCq2DuNWayXzmMsoSon0QBu2sYZrs -KO162vWF1nReiqaXtwMlsqWz0fHjKaEZT7VKeHiXIykj0+X++5WtPFouQURjN8MW -khlfstXqNxaOfOJH5k8+u1Pl40fpbwGUrKT4lbXsXnsCLyexX/tSpX8f03ojArJb -26aJARwEMAECAAYFAkTjqiEACgkQaWcicyzDkSDXDwf/a/f1T4443Hg7DFC7FnS/ -OQe2X3/koIAxztEK/NFdX/fiYRPPtla3vI9OlQrUCsTLeW/qA/uM8JC/psLqzoid -9A+Qx3VNnd87nLaLQtbHxDKf6R0OwRYDOwYOfOY9/Hwnqn2Mv8DcMu+qJl8P0Vlz -Wo6KdkjoLzGaqX1dVHfh4TXoQy+BQqO/8tk/F1zd76KbIB+IK3YyaZO47B8453RD -7OVSs6/xMuxVBY3C2Xwp9LxrBw+k1B2JZ+3PWlEBSXJwKHN6DbZWfTVv0CQnj5cg -UIl77MMDFb9hPPw/2fwM6OGT8V5hP8UJQZY+6i627IWCMY+gSBpjScD+JobaCEi0 -3IkBHAQwAQIABgUCROO0uwAKCRBpZyJzLMORIL07B/0cVMwFkEzQ7NPLm4415ggC -gyrc8NgMHHTzR9YmBAk0Rgn1ARZERkuZyrtgbjUY1AjZiHaAVrNvF/DtrhWcKNQ7 -snBJdlU3GBVyzEuKTwtmmFsPxrFa/mWmy3S8b6SqejqzKMbhXtG+LpSXGzidPRzc -TUkWZzlIAI9OTL3Ot03z17x/hjRnvnAcOIL6gmEdPMsua4nTBQIDxnzWoqKqO4dg -W3Ooprb63UtutnioEGA4Zz5Eh9qQeRgEleoKLwpy57NZ4aaeT9gD2DX7ffYYuHx5 -CaCGz73S+0CPK9HrMADS1Pr/xnTMZAmOkxTaA8TMHqlWlM/tq7kg1wm7u78NVztA -iQIcBBABAgAGBQJHNMaeAAoJEAv7hH8/Jy9b3qYP/j9s/GTSkSg92FZwp7uTxnCH -UZjxbA3dzP87zU18S8TOcP7Ce2y1TI0Xbn7lUA8MMhq1mj9/NahdHaU8gvLuLHQL -BsUU5KvCP+R7Qdns7XC27ohHfmwD1967jDSXXUDVNiyw8L0wmgtSct8rOPpvYXWP -U0gIFcJCzil8W3J7S6Xz/BmUm1gpE0ZYXBWbYot1fbAng0CJvuzi1UlwRGsCu+3e -sHI0x6URQcsibVwmsGK+Ow9u7CaRNyTxJJdnJ52JaAsqh35bSQVw2IsBztpeerLZ -q/mJPOMcDRhzbpHL8M0gocO2OrjQuJN0+GXUaQa4c1/8/h5h1AOBrQJY+YTougjR -upa+Koqdd3AljxK9jDtCsKjbbIbTb2tchP0OsShrgreocfWV7k4kHPSHMlHR3bnR -RLgF4lWtrQGYWgCF4YeNQdcsw/upCk8Xar9YhM6e3sRnQzvQ4jMoyUN2fK0TDwgj -M+lWTLfGKQBrXEtfhKBKMb+3npcMKfsCwAajBIJBZX927oHhXNBrHo+iv81KlmHQ -U3n32Rqvn5oqc+cbyQJMe9Va5YJEevPzefJVRkeNMmxRtQIfm/q30ZdEzAbx8BM0 -qYPNrKeEBoWLKdZS2iZVCI4iNsogLB3EWgyajumC/bbL4p5vqnIlKN70FUMxdKab -TsePWdIAB2DVOz1Cx6bwmQINBFcMjNMBEAC6Wr5QuLIFgz1V1EFPlg8ty2TsjQEl -4VWftUAqWlMevJFWvYExBOsOZ6kNFfBfjAxgJNWTkxZrHzDl74R7KW/nUx6X57bp -FjUyRaB8F3/NpWKSeIGSpJT+0m2SgUNhLAn1WY/iNJGNaMl7lgUnaP+/ZsSNT9hy -TBiH3Ev5VvAtMGhVI/u8P0EtTjXp4o2U+VqFTBGmZ6PJVhCFjZUeRByloHw8dGOs -hfXKgriebpioHvU8iQ2UGV3WNIirB2Rq1wkKxXJ/9Iw+4l5m4GmXMs7n3XaYQoBj -28H86YA1cYWSm5LR5iU2TneI1fJ3vwF2vpSXVBUUDk67PZhg6ZwGRT7GFWskC0z8 -PsWd5jwK20mA8EVKq0vNBFmMK6i4fJU+ux17Rgvnc9tDSCzFZ1/4f43EZ41uTmmN -XIDsaPCqwjvSS5ICadt2xeqTWDlzONUpOs5yBjF1cfJSdVxsfshvln2JXUwgIdKl -4DLbZybuNFXnPffNLb2vPtRJHO48O2UbeXS8n27PcuMoLRd7+r7TsqG2vBH4t/cB -/1vsvWMbqnQlaJ5VsjeWTp8Gv9FJiKuU8PKiWsF4EGR/kAFyCB8QbJeQ6HrOT0CX -LOaYHRu2TvJ4taY9doXn98TgU03XTLcYoSp49cdkkis4K+9hd2dUqARVCG7UVd9P -Y60VVCKi47BVKQARAQABtFRHb29nbGUgSW5jLiAoTGludXggUGFja2FnZXMgU2ln -bmluZyBBdXRob3JpdHkpIDxsaW51eC1wYWNrYWdlcy1rZXltYXN0ZXJAZ29vZ2xl -LmNvbT6JAjgEEwECACIFAlcMjNMCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA -AAoJEHch9jvTi0eW5CAP/RELE/OAoA4o1cMBxJsljWgCgDig2Ge91bFCN0vExLcP -0iByra7qPWJowXDJ5sCjUBnCkrxGo5D15U7cW5FC0+qWU73q0AuG3OjKDQ49ecdR -kYHwcvwWQvT5Lz3DwOGW4armfEuzWXcUDeShR7AgfcTq+Pfoo3dHqdB8TmtNySu/ -AdJFmVH/xTiWYWrOSibhyLuaSW/0cTkHW0GDk06MlDkcdkTzhO5GMDO7PUxBgCys -TXFR0T9TVWDo9VwvuMww2pE5foleA0X6PD/6GQpy3aX2xry8rhFvYplEa5zwXhqs -scdKXlp1ZPZ4PMvvwe495mY9n/1Rx1TmMvIcLHKP61sURMOve97Gipk/iD6oaeeT -8I0khexHCQy7JMROoPMrz5onVOt2rAGZScIZsm5FYGSt9eDKBWI6qpJ/5QoVhkRW -jOXOchZlJHo+kLdg6jq2vOnIlFnXo0p6Rqf/IEq5PMh70vVZpk4tNYNy4zRx03ZT -A9qXRLW+ftxSQIYMY5eCZ31lqSH4EjqgtUG+zn2A6juKayb1nkt2O3F1wWOm6oTz -NsAP5LdReJRlw151Jp4U4ftGtw7ygq+nvokXL7YLuu8sbFqfFXcTPrAZa5M9gnC7 -GCnIQyF/WvqUnrcaC1jpqBc+pkSJhROhN12QY8Po8AT8/UaUh/dPIiW5A4o8pOPE -iEYEEBECAAYFAlcNtn8ACgkQoECDD3+sWZGy3wCfWTMZWsipX+yG/VB4Q1FunIfE -VHYAnimEXCjZ3IVyy5F1yU36PihDCjWqiEYEEBECAAYFAlcNtvEACgkQMUcsOzG3 -6APnRwCeJ/bfGf8FBa4q5TMw8p1GS1jWT5EAn2sc02481HHdTmZiW/CGWXmgE+OP -uQINBFcMjcgBEACrL9gHhdr6gQX4ZMA5slp628xOrHCsdLO54WNdPRKeFHXJqSSJ -i3fs8FxBWI4FnejeKUGbF+MrOlFpKqELxaMje7bwZyap3izztZHszP3YmOoTBJvR -EGKdCkL82cLsChYD/PrgE8crvkhSnq9evcsKAnziMxg/wDCChUL3Evqo29BeoB81 -f+E9wkrUTMCT/kVxt3pGRalKX0UhrtKrpm8yRfjufJfwjkdwgvinkRGZ2GrWHj4L -zMbi9/udYaJZ66Yw0hEU4USxUB9vNtmSFrb4EB91T2rhc68dgQ4jYBI7K4Ebb8Xa -WAxb+IAq31l1UkiEA32F4qUMoL6rChB4y6nHxOnTvs+XEb5TBwXVogjLRKTQs5U/ -HV9l7j+HAchk5y3im2N2UKmMxHqotvPZZUZPdaCRxUedQf9gR0yLZV+U9BcDuwjz -L/zjrthNZYlEGJ6HZ/TLSTp4dDH+uXuLqMVWy5iquKtnbrnNTQtv5twD+Ajpgy60 -YLOJ9YaiJ4GjifOpzSk83e1rJ3p/pX6B5NWQinVLZJzxyeOoh3iMjdmCDSnEXLrC -mYv5g6jyV/Wbd4GYFuMK8TT7+PQdWLcbZ/Lxc5w0s+c7+f5OfmKXO5KPHnnUsrF5 -DBaKRPjScpwePQitxeIglUgEMDkNruBhu1PzCxd3BtXgu++K3WdoH3VcgwARAQAB -iQREBBgBAgAPBQJXDI3IAhsCBQkFo5qAAikJEHch9jvTi0eWwV0gBBkBAgAGBQJX -DI3IAAoJEBOXvFNkDbVRQSYP/0Ewr3T7e0soTz8g4QJLLVqZDZdX8Iez04idNHuv -Au0AwdZ2wl0C+tMkD7l4R2aI6BKe/9wPndk/NJe+ZYcD/uzyiKIJQD48PrifNnwv -Hu9A80rE4BppQnplENehibbWaGNJQONGFJx7QTYlFjS5LNlG1AX6mQjxvb423zOW -SOmEamYXYBmYyMG6vkr/XTPzsldky8XFuPrJUZslL/Wlx31XQ1IrtkHHOYqWwr0h -Tc50/2O8H0ewl/dBZLq3EminZZ+tsTugof0j4SbxYhplw99nGwbN1uXy4L8/dWOU -XnY5OgaTKZPF15zRMxXN9FeylBVYpp5kzre/rRI6mQ2lafYHdbjvd7ryHF5JvYTo -SDXd0mzF2nLzm6jwsO847ZNd5GdTD6/vcef1IJta1nSwA/hhLtgtlz6/tNncp3lE -dCjAMx29jYPDX+Lqs9JAxcJHufr82o6wM9TF24Q8ra8NbvB63odVidCfiHoOsIFD -UrazH8XuaQzyZkI0bbzLmgMAvMO6u1zPfe/TK6LdJg7AeAKScOJS38D5mmwaD1bA -Br67ebA/X5HdaomSDKVdUYaewfTGBIsrWmCmKpdb+WfX4odFpNzXW/qskiBp5WSe -sKvN1QUkLJZDZD1kz2++Xul5B97s5LxLTLRwvgLoNaUFr3lnejzNLgdBpf6FnkA5 -9syRUuIP/jiAZ2uJzXVKPeRJqMGL+Ue2HiVEe8ima3SQIceqW8jKS7c7Nic6dMWx -gnDpk5tJmVjrgfc0a9c1FY4GomUBbZFj+j73+WRk3EaVKIsty+xz48+rlJjdYFVC -Jo0Jp67jjjXOt6EOHTniOA/ANtzRIzDMnWrwJZ7AxCGJ4YjLShkcRM9S30X0iuAk -xNILX++SNOd8aqc2bFofyTCkcbk6CIc1W00vffv1QGTNjstNpVSl9+bRmlJDqJWn -DGk5Nl4Ncqd8X51V0tYEg6WEK4OM83wx5Ew/TdTRq5jJkbCu2GYNaNNNgXW7bXSv -T5VINbuP6dmbi1/8s0jKJQOEBI3RxxoB+01Dgx9YdNfjsCM3hvQvykaWMALeZIpz -bXxV118Y9QQUIRe2L+4XZACEAhWjj2K1wP7ODGTQrrM4q4sIw1l3l7yO9aXXN7li -kAAddT4WEpGV0CiorReOJ1y/sKJRJSI/npN1UK7wMazZ+yzhxN0qzG8sqREKJQnN -uuGQQ/qIGb/oe4dPO0FihAUGkWoa0bgtGVijN5fQSbMbV50kZYqaa9GnNQRnchmZ -b+pK2xLcK85hD1np37/Am5o2ggoONj3qI3JaRHsZaOs1qPQcyd46OyIFUpHJIfk4 -nezDCoQYd93bWUGqDwxI/n/CsdO0365yqDO/ADscehlVqdAupVv2uQINBFiGv8wB -EACtrmK7c12DfxkPAJSD12VanxLLvvjYW0KEWKxN6TMRQCawLhGwFf7FLNpab829 -DFMhBcNVgJ8aU0YIIu9fHroIaGi+bkBkDkSWEhSTlYa6ISfBn6Zk9AGBWB/SIelO -ncuAcI/Ik6BdDzIXnDN7cXsMgV1ql7jIbdbsdX63wZEFwqbaiL1GWd4BUKhj0H46 -ZTEVBLl0MfHNlYl+X3ib9WpRS6iBAGOWs8Kqw5xVE7oJm9DDXXWOdPUE8/FVti+b -mOz+ICwQETY9I2EmyNXyUG3iaKs07VAf7SPHhgyBEkMngt5ZGcH4gs1m2l/HFQ0S -tNFNhXuzlHvQhDzd9M1nqpstEe+f8AZMgyNnM+uGHJq9VVtaNnwtMDastvNkUOs+ -auMXbNwsl5y/O6ZPX5I5IvJmUhbSh0UOguGPJKUu/bl65theahz4HGBA0Q5nzgNL -XVmU6aic143iixxMk+/qA59I6KelgWGj9QBPAHU68//J4dPFtlsRKZ7vI0vD14wn -MvaJFv6tyTSgNdWsQOCWi+n16rGfMx1LNZTO1bO6TE6+ZLuvOchGJTYP4LbCeWLL -8qDbdfz3oSKHUpyalELJljzin6r3qoA3TqvoGK5OWrFozuhWrWt3tIto53oJ34vJ -CsRZ0qvKDn9PQX9r3o56hKhn8G9z/X5tNlfrzeSYikWQcQARAQABiQREBBgBAgAP -BQJYhr/MAhsCBQkFo5qAAikJEHch9jvTi0eWwV0gBBkBAgAGBQJYhr/MAAoJEGSU -xtaZfCFeW4kP/iZq+blRDzgRzOw16x80vyBjfPOUKd++dSUkcr4Khi5vjBygNdVS -WcKZaBKVkdBmCvf+p9bYwzfL+RdxvGEv8WKNTNjdaWcJ2chU2O4H5Am3QsduQ/sS -f+jTzlnMe7NpfF9n3uo34o+xEFOOcnyF3cHrhxWOCde9rX6kbnUQriIMXZteJY8e -9Rs+Iv46DoL1eOlavAgDUJbIf/iLt219OdtWI7ZqopA0d+tcn7FL3fwuvyvn5WZR -YHIerB4EYgBI6bCwl5JQejORlhuYx1oknyPjnzPJ9Los74chrf7OHOJ06iIQf1zl -C9V/niA2xiM9NwePtTQOCTEJVB6IEoEtH6rozpAdriprH9fRnZkJxINNnCoYk1op -9wVh3xfUHbOCvGQbB54cqN+amp9dEquCAe6Yt1WodTspL1zPXJ5Mv43Dud76TNEw -QDywuebg4NFQnBTPXZGpLQYbUVhXSuMlVZXNEUx8xSz7vECm0S4x2h12RBKbK2Rf -I4oCq/wpD1dQRsZaKSYLFbZw5j2yk6nBBrtfahd7sWVX1F+YdisbTeT5iUhESAWq -W9bCyCnNRFy6V34IgW9Pe9yLu8WbVSJAFvnALxsc6hGyvs5dbXbruWKmi5mvk6tC -FWdFlBVrrhx1QgqMtcS3jv3S7GHyCA3CS1lEgsifYkeOARAgJ1hZ5BvUurUP+wb6 -6lIhDB0U9NuFdJUTc6nO/1cy3i9mGCVoqwmTcB1BJ9E1hncMUP1/MvrAgkBBrAWJ -iD2Xj9QV/uBozA7nLxrV7cf1de9OLgH4eNEfX25xj8BBPYnyVyHsyk5ZHDhjj9Sa -urfvlFWYi13i5ieMpyLVJV4+r2Wi1x1UgKVAlB78sHYnbDzSoHPLBcIxtIKp30LJ -0PEkat8SG7G2wgtv1RdhmcZEBV05vMnrGGO991e+pKzRNPYH8rD3VQKJlvaFwsJu -BTW42gZ3KfpUNKI2ugCcnRNpoHFWNCrzlJ0CFI48LMlmUSs+7i/l+QGleaLKQxRT -NNpAmevLrS7ga4Iq0IEqxey6VW6RSk/Z1Z37J8B7PISSR0rZn6TeyQgFWf/FOLw6 -OtwOquGmMeGSqj2UzxybygtsvUZz0BxYymoWFd4F8sp43oL2TXU6Wp7QIpBaFgkS -f/UQxfR6wcQ3ivafeS1lg8vUFuMfuMLto6T0JiZw8uKSuDWltSReF+FXVnhawz72 -BZMy8RIoshGdpWHn/YbN6L+JOuxZnvkMAZvSLT3c0H4XCDYtEfK2mJMqD2ynX5tG -R8Fy3GAaEjhx36TvzTjCXRmJ+FnlSW1p77x+UjFUFcpY8skv+f0Gip30iynAb1ho -AdibIDab612OWi/4vX0DaM6t68Uq8rsabeJYsZG4mQINBFkQtZkBEADKbOf66dGn -mDHnV/XEJwZUcNkn9X+bsOsbWtGqTh4ura5tEozOEBDw2eCFFFN0PlLyj79WQOsc -gxUyi4h5AmInYJlL6DK8rHp9Cu0/IDtYwuO4nbUN0SMTEb/9UdyVO8to63S+2PyF -re8ijh/fGPbBgtu47rEI1tNCDkreUKSQ3XpbVEQL8601tbakSoeVEApOMv06pQMc -4ewG1Qo9ogYaqvlEQFVboW6CXBr+CoP1s7pcxr0l/iJT90dMGQevFpyVt64CfQnL -Amd1VOp7JfNYOTThAK/y+Da6XTp+R1kfcX7Ha1nWhGiuOHWh7kUNQoc643Mk3M0O -+TA+gamnFw/ZLYDvm2MyyTUvVdmS2Is9xllfwuqWELy3yADmSCPRcjlFU/Rsc645 -4HYEVd9tdaXt3LiY2WyaMp/5mBLOXbq6I8pPPouYhWS3QSGG4HEMtiSibcXjwEzX -f2cfBX1ckLL6mlaAQC1ZXs5HvnOhJT+LcbRJEe2I2J1gEAjTu7drtKIIgtYX+woN -I4juYUfrjkJC4pQfKcS/qAdY1SuzczT8T+QSzwm25mq1KcPK6/o5QXdfUpRArH7M -QBEXWeKUw0tpv3MXVrsK+WMhZLNbVYnXFNltdZvo0OPt+w/PWR7OcWYn0lM6+zPE -1t4NwmjVTh3JM2gGWf4gCtEGZpyNwW0ArQARAQABtCxTdWJsaW1lIEhRIFB0eSBM -dGQgPHN1cHBvcnRAc3VibGltZXRleHQuY29tPokCNAQTAQIAHgUCWRC1mQIbLwML -CQcEFQoJCAUWAgMBAAIeAQIXgAAKCRCtrmrSio+QGvPyD/9bGTuBAeS/NR68txC3 -9koiGdWpRXvvOTDTo5tF78CLqmDb7KNjDpgwlfKriV+qdsUhvEZsA7WeB87KOqpt -ztR8zhPWCN53hupoBsBLjvDET/AQYZYBwuCwsv90Sd8ErIK+kXxH1XnCSIiV9AwA -PPfpZDM2lv22KoxxDowzz8i+eIayZH9oaOFAoLNcaMhZywiDCH8lk5h22Jubq2El -wDAixowxdDL6xzYjTmsW6VPThdvixL4p+/kgXWGWEPqMZUrLZvlCwGAHFdcg8o4v -WibT/j7JAF0rYsOOBEzLOP+wbk6FCjwOgk8kwUaJQUuxEJp/xWw/aHcpVz48dWdX -vgE+AQUY/qKe2t2MkSPTgScjXVsATb3fZo2YBrMm2nY2OLRuXUIbCnh0ZxSKRI7+ -4jUPPCJPGh6xBNxnUcNal4dkeUEmZ+KL0G/4BtSIpVq/sbBnxO/FOKEhs0z7ONrU -D2KAhGRrSEgRsTCpzsvo8IdRzYnTnDAZU7ouK5oF3jQVt/dvDp9CKUfG1QoP5FSK -jZIpDyxT1sOqWWjEbcPbzMnMVcVqWh+zruGT6R8ohSduhMcFTtrQHd+ECe0tBd2D -GHEmPy5lA97gLVo4y19/IIlLJxXcXJbOPkCCeHlnHq6nD/SCtnch7pDS6kaBe4Va -eT8m4/EHjROAmI2SprI1TdzS/LkCDQRZELWZARAAvlA9fJFa29VdBYDBAwygPaIf -CelSwkq5UaPy9wLI0bSu5HaCnHD6FnENB2TOC0No2MXIfxQwJ4nyna37xsaLYQO8 -Qt+3EJ0mFmnToyhL8tebdsSBkqprCVixAf2PjtkXtr4XxHR4L2nt9nsb5w3eCkcZ -3czkafkePSsMuu8c2y6e8k+Kb+caTENWNxob/oOmp0ybJDBKVa8JV5BVbvUd8JcW -sLzKx0BSTxTH0j9eCpfBLilZZml1A9v7AgW5tK6HVNOufkR1DsHrAIQJQdyt8HKU -XY0/7m3Tm7/61ONjKbuFaIJYrkNMgr0P7BKNFMAjyJBFwa2Vf60idfxShu8svzvY -BWSRWplEBnwlxSJvdQT2E6p08kOdgVX3FY4k9JgmMllE1ZsyIdF8hcpfReZn+3Rc -PrutvMYL5Cyc63xuiRUjaMLQroZ7CfFuvDRYqgkGMQbHNhWrQzHx12FQ/Mlw7mS9 -ypbnFhJUP4SrYKIyVW2dEUTaUpaUlfflNNRZiVZXgtnPiIU8kRu8WjDUWKHk3QMs -4KuRiudk4ZSHP+neBe9Bm67BPhVkYcpBAyJBkLTZAWmosdDCMIAyXbupR760oQUQ -ST7tEilplvHYX8XpDBmSIM43aMKQizI+A0HYf2zdjiz5K5hAL0lQx9HgRSbgz6vW -N6FK0pEFrm3TifvdZvUAEQEAAYkEPgQYAQIACQUCWRC1mQIbAgIpCRCtrmrSio+Q -GsFdIAQZAQIABgUCWRC1mQAKCRD1fU9ZvT30VPOLEACB+F2hb45D5ofEoVHgYBrD -2BtPSItSAMQtvncwViH42CatT1g2n7MHwdnLts8xSCeAaEdWzpIaMbUVO7qSkWP1 -gYjbq0gozEIYplzdcSFLvnDfkvSYCelJqv7GJWJxJQ59hC7V1QWKUQFf4CH8X1Mm -1tHyuSe8yTBerZXWExuLE/lkBcc/S6tSFUteODIwPeXzOMkWqf0Z8XFNNUDwlKVD -cT9apvpDxE5pyOmBgJ+QRE+QbstE//nZQaDN44d2+I/4N3NJcWNIq4D0viENwJHb -CvDIeeAOux8QEjBOWlBxYsfYwd9xecRR6IiNMnLd7zw2B1/44vbSUOTg8pVh9qJz -YzolBlJSQU8cyejCoYmRt9GbWWrhoRudtKDq+5VFIoJOSAAzgNAUgJWIRS6h+4jU -oYLa9ew1eytGLTLrYR5fFVwA42WIjDfVXpP93IVSjOFswyD/YeyGjQb22xlBvVGr -Lv/V3bK3ghQjAqlXRItLSH4bvFRolna1tdlpuCNdHRwdpujd0IGvG7jMmKTbNQmj -IM0ZLRYXKzSOoRx90Mc8u75qvC1seMtdTSdZap2etz38Cm7kRPjqVpLbv1obUtPI -VPVjxuQpY1m8jmIT678t8W37zxCxrJ/4sOJ3PMNjnl7Lj0Y4HZsopZN2Z4Yf+Eny -NwDHTaVWpWqMrkgQMz79WG3gD/oCQ3SC7/5ByapZBwahFuaS52Qmw+70ahNkWiUN -fLUZk3TTQbKpyJNziKdVW10llEr76MEw1TwdjXVPH8uEGYTtI/gcbbGTeXMWfBor -gSkSdjgN6QgMgZbHpY4ljDMPdPLuivJ2+TYKN3JCWPGorOolzezyU+yZkz6353Uo -X6LMGLQObB7AugQLcJO6aZnMPNqC7wof7VjWZytGvwA0id7Siudviw1IUOxj14oe -vNheNHwicVTTlS0fnc+88d1AAL0jmmKyrvdawPPmuHCOosQ/ymXanAqNx/XUelGv -JKSHC8i3itiVbDcArkaVrwoE2y2t//0AvStsmvKMR7UE+R0u7C9/lbU2mAambMJk -c1XzdjEbuwD55JMqik4AXgAqARnZceV/YkLzqJG7TbHv9QSv7t1Fg16gUW3LLIfR -an+sRgF3QxnmJD9xNrz0EIvIRSKhFH+EX/cQAA/yUw78H0YeKGlPpXsOOHp8l/ZL -XsCCK2RvMFmOWfCcoBEzuiNn5I+2MUoiXkSkdsBy1F1O2ZyGTA3bhdRUW3ouD8PS -hapJrx8LnrM5ADzlbDvTS0TLegNN4An5bSbj09dIRet0lkql+RTCtyWh95sr1kgG -yyQCyF/Jv7NSntcQlJL3whphCpOkvOvK+HlBoY5UMcvDuGKIXk111Z3nrF4DeIIc -/U6ICZkCDQRXbbeFARAAvBQ0ljEdOxiWduuYIi5+5CxfhLCQlhElKugndd0DdCUP -7S4m4kJVuGY3jpxB/VT5aof5iqjTBuEsEbfEvhh6XjzEK69GjpIkRnwnJZwFiGVE -UgD/rTy3pQreN35MNQQU6KXf9KDszvJB7vI/FlOAPBh8aoIXxVj7+eBULNommdnl -ke2une/SCa2wymlQgokK5IQjPJuuPKTSh4bqCfXEFxVfrr8JKX5ilhkOLpbcZTso -yxySxb7jC9kbgDvSMW3WY83mDTfk/sIxSAVXD58BDvlq2ILxpE+K/Wqlak3oNxD2 -+0HJVbCgVSXcZOI2ZdMtthwFqknFYukidebivaV8csA2ZG6bkQVseE4VohnvxYlG -tooIvf0iL6jdkwWNINfLEU68pVa9cBNVBmv8u5w8ej6Bgj9X6wbfGFGLd6ZDPF72 -9gkccQslsJrhREBwuowhFn+xZ6ARwWEME1Rja1NL5LiHg65vmQHL/MMfontYZRYa -ggiZ346nkNP8wPUT5gjzpC8k3UrDWbZccZO28wnU3RRSswYxk0exs90jEqdt3ddX -iMkYhR0LKdr9Er5zyejnIAfeR5qOeOL4t0bqFX6L7QznX0gQkcT/hoYcZCkq05Xk -Iw9P6whpHRtiqMd5vWJZQLL2XIS15Uu22VfZhkRetZlTIxdxyUVEHwQZvPVT0PkA -EQEAAbQgY3VkYXRvb2xzIDxjdWRhdG9vbHNAbnZpZGlhLmNvbT6JAjcEEwEIACEF -Aldtt4UCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ9g9LPX+ir4DQKxAA -oZ33Fq2CLYLe8V17m0+hPiqScidET613+dUtpoXIhW4w5ftxF0TEYzrrVZoFmD1l -FGWikfCHs9y8+AUZsGDlgS7XZzi2yqErEFF/ea5zxY35cvwxS34ysc+DUQZoeK+P -6wmFptoZp15jgIvJFe36sd4OVzKSf/zevk/HLRKJdomfNhq142nXEVhOKwHu1Mrh -Mye+MumSiM5OYo3YBCrXGgYcxFr6FeT6/Z5J+wchrHXoSkf4DZ4zzGF65JUhxn6Y -SSLEtkt9pTJP5LkY4oQXFnGAVyDxEOwlfjzVtk5ZGY/2Kk4Ot+7GR8JIXI3Dc8Xq -ir0WBvFeybuYUw8S9VEAZoA0t3EcdZcO7WERuW0uu7WwtnXPwqT5BuWoImf1sqB0 -A55+K9X0bjhceveEEevtKwD+te9cRBKDQD2h+4HSXYViomIiQ9E9hBG1u8AVIvxL -qXikb5EddkdY1GtZpacTbVkMSe6qffE/fg5pMSNVw5lsdP4OK8ronMCw0qqD4DXE -TXUkG2/GH06q5Kmg3WM8C6/59GClt3GCLyHorFdFsUY2+jj+6AJQLWgISJpSHP/+ -dajTu/1gLneqjLZ4RaGWskfwcyyqpwoqDeRmK/QQCrJKTx3vXAylUt34PkL3NbDS -SA/o35Odj6sltuELK9APfuc0MhOLR/XX79dtII/Wr5qZAg0EVctRcgEQAOCBjhRM -qrmNTSVgUDMLiDuIHnRpGAlED6cv02SsdqZ202CB9XLDN+VBgnjD3oVXmnmP7029 -1+Tlk8d765WZoLkBR0h3Yb7PMb9+x/dGL2HPrWxiDgzwPJFkOH0ouqv7HsBrMAeO -arAt5xP+w0d3AcV125By++TB8zDwlQ3oghGttPchKhmBqS24XwR8W5z88qgKgdZe -OBWrD8kOOkv/UsfIzBhZ9mCsbjU+pFLEj390q3Rbtdd04RyQdONXohmRUJgIExw5 -szZktIxVvS71KVM5QgdoXcDYhj71EulQBrxtkuh2JdqV9D06a9Cb54hc553MGGzb -PuEYEnBwIZb3hxXKBZTJqR+zEKo8Xj5UkcqcSCn+SQ81XeL9c6Uw7POrtNlCM1dO -ciSqF731HcLaxVJGHwZwe9KXV4qH4+RGMnVqZLHy7aZ5PnHEotx+AzhGhWS6MZ60 -1IuIma/vbUkYKFeLEtrR+UvxF97u9UHTyDMF1v7Uoub41bxUECGzd5y3Jy4Cf86W -o36Dc/DDQJcodGAMpeQwO0ug83MyM+LtsFw/k4/e28E0EsnHXYEQZnB4OCkhhQAA -L77Ie9hWPmzh9gMMELqA4Cp5X6PCJu3mTCikGvzKtzjd5l/WKW5maaLrYGA6mTcz -3+Qh2EU7haUwt94nthjPr0IsIQP/rzTJ/xTLABEBAAG0J0xhdW5jaHBhZCBQUEEg -Zm9yIEdyYXBoaWNzIERyaXZlcnMgVGVhbYkCOAQTAQIAIgUCVctRcgIbAwYLCQgH -AwIGFQgCCQoLBBYCAwECHgECF4AACgkQ/K4RCxEYITxZgBAApIb5+lDSEAHLlHtR -1bwy/Uv0oPdcB8EB5LfFEt1xlUvAPqme+JF2PylNlPJni1ov0A6klyyRW78xtBh8 -Bz9Rj+o/q7FOvsSLXF4Qo+ukhOZNE/NUFSBwi8fJ2Ii5lnrR+emvIJJKOgedraW0 -V3QTXMQc8DxGw+f0KMKFknNMPW/IBLvPCGoa1Lh8etIeI4IRi+hstqh032Y0/D/Y -5yBq1LAGADSEqc20x7VUUpTHUYfaYmgvn00MVW54ix1tQ49At8yFad8ATe0o5KSU -o3PUi8ErpdxIMoA3pf/yiJpJa8ZBnAqP7hOh4oMS9eO9LHI/ZJBKMccqBXgzh4FJ -MhlvEivMn/86p8w3tsU9UnA+VxWUFlTYDu5K4JRZ7LSVfAfli12J+JI3X5y2KIsF -IS7CIU91BlPnnaWuoAcXznzqWBM7BnuwQlNnBS0PjMel6uLhXc2f980DTaZpqYeD -uL8EOJt0f6vzASl3PTMwYKkcR7I4nd0h8n0VsPRUkCpEgz0ZMLBJaYSCxM5Asb0E -I/71bNs8bUhQ4FolpSbhUHDfHw5MGu2bNL8ycq1T/Zb+LPc0nUBna0EBtpM0Yjl8 -WXZlb6vrmIwHBhn+gg7OVTlKc1Is1bcyYNQ0y/baJo8rXxncRhoa/wmFg7koXijV -p5v93l/ulUDnYYKRJ3fDAgrf09aYjQRMZKMIAQQAmlN9oHd2PJQrKcdOHd1MjhH9 -4U0L5USIMvbj41SB6lDWjxQtFG517w8daZhasIVp/OV7T23Ccg9DXsil8MIY/cLi -yIfsYzyahmlSDya+Dz8gZ2u7p1KgUmM1PklaVw6fGm/w2z7Xp3JGuF6k/0YTsPuw -bYyeZjYI34znp4/3F+cAEQEAAbQmTGF1bmNocGFkIERhaWx5IEJ1aWxkIG9mIG1h -c3RlciBicmFuY2iItgQTAQIAIAUCTGSjCAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4B -AheAAAoJEAlYmHSAHfckR+oD/0txQRcguKAm69MRd9jITlLBNsIM2BELXevAQ1bq -KlGGEamSSaERupZKSJfZ+xNG4/vvA2ZVGjz95uKdOO2Fu1yLaaiFs6wYxB4vFstw -xogasprYbBOeUcbzSkjhxJUgFlH6gI/an9kFEYeD1s2yGl18EE9fkUG8W/AkhhcR -M2MpmQINBFSLYMIBEAC40a/fcfUK5r7VDT8v/mLuYANqcD5EcLCy9yYhMssFJJIl -V+b10aYeQPKO0AoTw7+zh3l2XA1YVfNI/VGs9MPeREkcO8isW33E6IR6X6sZERwU -9BXvYa/pUeRrcevSiaDmj7WK+BvUagAtl61pq1AuaxW3iVLYUcSpTzi3Fn3R7Hok -pS0WwAkx88X7TGbIQOOvKIDgu+XkllbBXz9myukGSzunhXPC74muQB8FqRDr/Nt3 -sUqOpjzViuUU9kEmXgZ/ba4uzbeMFrI6NU3ACMaijgJQm781VMhVpPHjqT822/7L -EkNqGw2O3uK42PoEyFIzrM47u75P7ZTIfjQheuk+Q4p5oheZz6SLJsOEG7hqrx8E -AIF1sY+LuPAJ/DkB5xAzRM63VnFeOAuiqHKwwhRt5FEy8b9mHl37taiJHDfzaiIH -0mmmZAHCeTAfh1BJDB0CB6aCbBG7mX0F7nhxI66FpvzksjwkBAt0XXey8WFUc9UI -0DntTRICpDo9yZO5lzeh8lUfRTirOFwnedDRKAw/1ZVwl5VuNXHX/MPYgPQDeafS -vKM0yTCV3za6ugbYwH6w694w2BWx1p0ijRV30guJqWD4+43YlWqAZHln8SxDKGlM -UwBTRk1CFICysFhG7fgWpeWlmamv0NagQMJbFenmWLyNY+8sKw1uzn+/AJgKlwAR -AQABtCZMYXVuY2hwYWQgUFBBIGZvciBXaXJlc2hhcmsgRGV2ZWxvcGVyc4kCOAQT -AQIAIgUCVItgwgIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ2HVVExTs -oPAArhAAqBC7cdJ6Tk8PIiDBQOARTxaIBpFpTnHzYBeaqjrNYozFJXru1GeP3ROw -65G3mLneZszgaSsVwvzlW0y2qQM7Qjuy5irFOk/q7wer0pR+HLoGmVQqjKdxzZvF -9ehYOA0cOIY4EVKtXey2/QXUk016H/Ru9tcEPSgihwKMLBLzKPqgZm8lsO5Xb5U6 -Lh3SstkUW1S/5rwnfvw/YM38oh8d+9BAdjlrlLNxBT6F6u/PWIRCgI6OMenOdEwZ -XmfB0y11eY4Nd0m5tVH7OGa+xR7RyJxY1sFLyF4oBajyBMWLYEJL8iVpKbdvS9Gq -HvgQG0kHpG2ju2fgNvs3CdQAGpajwp4mMjKNdQLEB8d1T6DGzVJ8qcZoKz+2CAEv -LZ/xxVdUjkXfRm6dZfAGF5oRCwYY2jrOQYj41k5jzICwzE/TIfcKaF61G+/8obx5 -etN0taoej5d4ERBhUfEwH2BoO0V3t8jgkOcapOAMSPWHSIIgLaN1cMAm6YswBSSX -fXZUOlWQKkyH/qvCw0z4QXS1hsI1SwJO8KP3rJ2N1HcqX3bSnYmIuKMkOpmj+F8w -9Jou5f1EBMe7RS/ZSidCJ3lcyyUgFFmOiohHfnRSw5jA/x7p8TdVjR5SVeHLK3ij -we8vp6x9aQm9i4XPFJTKu137dQVCqzYXKRCFtQnfm32ipRGjfMk= -=WS/0 ------END PGP PUBLIC KEY BLOCK----- diff --git a/sources.list b/sources.list deleted file mode 100644 index 6580c4b0..00000000 --- a/sources.list +++ /dev/null @@ -1,51 +0,0 @@ -# deb cdrom:[Ubuntu 16.04.3 LTS _Xenial Xerus_ - Release amd64 (20170801)]/ xenial main restricted - -# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to -# newer versions of the distribution. -deb http://us.archive.ubuntu.com/ubuntu/ xenial main restricted -# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main restricted - -## Major bug fix updates produced after the final release of the -## distribution. -deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted -# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted - -## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu -## team. Also, please note that software in universe WILL NOT receive any -## review or updates from the Ubuntu security team. -deb http://us.archive.ubuntu.com/ubuntu/ xenial universe -# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe -deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe -# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe - -## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu -## team, and may not be under a free licence. Please satisfy yourself as to -## your rights to use the software. Also, please note that software in -## multiverse WILL NOT receive any review or updates from the Ubuntu -## security team. -deb http://us.archive.ubuntu.com/ubuntu/ xenial multiverse -# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial multiverse -deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse -# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse - -## N.B. software from this repository may not have been tested as -## extensively as that contained in the main release, although it includes -## newer versions of some applications which may provide useful features. -## Also, please note that software in backports WILL NOT receive any review -## or updates from the Ubuntu security team. -deb http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse -# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse - -## Uncomment the following two lines to add software from Canonical's -## 'partner' repository. -## This software is not part of Ubuntu, but is offered by Canonical and the -## respective vendors as a service to Ubuntu users. -# deb http://archive.canonical.com/ubuntu xenial partner -# deb-src http://archive.canonical.com/ubuntu xenial partner - -deb http://security.ubuntu.com/ubuntu xenial-security main restricted -# deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted -deb http://security.ubuntu.com/ubuntu xenial-security universe -# deb-src http://security.ubuntu.com/ubuntu xenial-security universe -deb http://security.ubuntu.com/ubuntu xenial-security multiverse -# deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse diff --git a/timetable.md b/timetable.md new file mode 100644 index 00000000..3b71c064 --- /dev/null +++ b/timetable.md @@ -0,0 +1,61 @@ +THIS SEM + +#### Maths(1) + 1. Linear Algebra +#### Eng(1) + 1. Game design and eng +#### Science + 1. ABA + +#### Foundation(3) + 1. SMAI(CV and Anoop) + + +#### Elective + 1. DIP + +## Courses to take +### HSME + +#### Science(2) + 1. ABA +#### Maths(1) + 1. Linear Algebra +#### Humanities(3) + 1. Phylosphy (Zulu) + 2. Shakespheare +#### Eng(1) + 1. Game design and eng + + +### Bouquet +#### Foundation(3) + 1. SMAI(CV and Anoop) + 2. POPL(Choppella) + 3. Optimiation methods( Gujjar ) + +#### System Courses(3) + 1. Distributed Systems (Zulu) + 2. Database Systems + +#### Elective + 1. DIP + 2. IRE + 3. Speech Signal Processing + 4. Speech Technology + 5. Mobile Robotics + + +## Courses this sem + + +## TAs +### Monsoon + 1. Cpro + 2. DLP + 3. Maths-1 + 4. Maths-3 +### Spring + 1. DS + 2. Graphics + 3. DSAA diff --git a/zshrc b/zshrc deleted file mode 100644 index c5a6d64a..00000000 --- a/zshrc +++ /dev/null @@ -1,118 +0,0 @@ -# If you come from bash you might have to change your $PATH. -# export PATH=$HOME/bin:/usr/local/bin:$PATH - -# Path to your oh-my-zsh installation. - export ZSH=/home/shubh/.oh-my-zsh - -# Set name of the theme to load. Optionally, if you set this to "random" -# it'll load a random theme each time that oh-my-zsh is loaded. -# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes -ZSH_THEME="agnoster" - -# Set list of themes to load -# Setting this variable when ZSH_THEME=random -# cause zsh load theme from this variable instead of -# looking in ~/.oh-my-zsh/themes/ -# An empty array have no effect -# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) - -# Uncomment the following line to use case-sensitive completion. -# CASE_SENSITIVE="true" - -# Uncomment the following line to use hyphen-insensitive completion. Case -# sensitive completion must be off. _ and - will be interchangeable. -# HYPHEN_INSENSITIVE="true" - -# Uncomment the following line to disable bi-weekly auto-update checks. -# DISABLE_AUTO_UPDATE="true" - -# Uncomment the following line to change how often to auto-update (in days). -# export UPDATE_ZSH_DAYS=13 - -# Uncomment the following line to disable colors in ls. -# DISABLE_LS_COLORS="true" - -# Uncomment the following line to disable auto-setting terminal title. -# DISABLE_AUTO_TITLE="true" - -# Uncomment the following line to enable command auto-correction. -# ENABLE_CORRECTION="true" - -# Uncomment the following line to display red dots whilst waiting for completion. -# COMPLETION_WAITING_DOTS="true" - -# Uncomment the following line if you want to disable marking untracked files -# under VCS as dirty. This makes repository status check for large repositories -# much, much faster. -# DISABLE_UNTRACKED_FILES_DIRTY="true" - -# Uncomment the following line if you want to change the command execution time -# stamp shown in the history command output. -# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" -# HIST_STAMPS="mm/dd/yyyy" - -# Would you like to use another custom folder than $ZSH/custom? -# ZSH_CUSTOM=/path/to/new-custom-folder - -# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) -# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ -# Example format: plugins=(rails git textmate ruby lighthouse) -# Add wisely, as too many plugins slow down shell startup. -plugins=( - git - zsh-autosuggestions - colored-man-pages - command-not-found - cp - sublime - web-search - npm - python - pip - zsh-256color - extract - sudo -) - -source $ZSH/oh-my-zsh.sh - -# User configuration - -# export MANPATH="/usr/local/man:$MANPATH" - -# You may need to manually set your language environment -# export LANG=en_US.UTF-8 - -# Preferred editor for local and remote sessions -# if [[ -n $SSH_CONNECTION ]]; then -# export EDITOR='vim' -# else -# export EDITOR='mvim' -# fi - -# Compilation flags -# export ARCHFLAGS="-arch x86_64" - -# ssh -# export SSH_KEY_PATH="~/.ssh/rsa_id" - -# Set personal aliases, overriding those provided by oh-my-zsh libs, -# plugins, and themes. Aliases can be placed here, though oh-my-zsh -# users are encouraged to define aliases within the ZSH_CUSTOM folder. -# For a full list of active aliases, run `alias`. -# -# Example aliases -# alias zshconfig="mate ~/.zshrc" -# alias ohmyzsh="mate ~/.oh-my-zsh" - - -# ALIASES -alias c='clear' -alias matlab='source $MATLAB_EXECUTABLE' - - -# EXPORTS -export MATLAB_EXECUTABLE="/home/shubh/matlAB/R2017a/bin/matlab" -export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} -export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64 -export CUDA_HOME=/use/local/cuda-9.0 \ No newline at end of file