Javascript protection

Updated on

0
(0)

To solve the problem of safeguarding your JavaScript code and user data, here are the detailed steps for robust JavaScript protection, focusing on a multi-layered approach. This isn’t about magical one-click fixes.

👉 Skip the hassle and get the ready to use 100% working script (Link in the comments section of the YouTube Video) (Latest test 31/05/2025)

Check more on: How to Bypass Cloudflare Turnstile & Cloudflare WAF – Reddit, How to Bypass Cloudflare Turnstile, Cloudflare WAF & reCAPTCHA v3 – Medium, How to Bypass Cloudflare Turnstile, WAF & reCAPTCHA v3 – LinkedIn Article

It’s about implementing intelligent strategies to make it genuinely hard for malicious actors to exploit your client-side logic or sensitive information.

Think of it like building a fortress, brick by brick.

The Real Deal with JavaScript Security

JavaScript protection, at its core, is about making your client-side code resilient against tampering, reverse engineering, and data exfiltration. While you can’t achieve 100% invulnerability the client always has the code, you can significantly raise the bar for attackers. This isn’t just for intellectual property. it’s crucial for preventing fraud, protecting user data, and maintaining the integrity of your web applications. Remember, a breach can cost millions, not just in fines but in reputational damage. According to IBM’s 2023 Cost of a Data Breach Report, the average cost of a data breach globally hit $4.45 million, a 15% increase over the last three years. Investing in protection now saves a fortune later.

Obfuscation and Minification: The First Line of Defense

Obfuscation involves transforming your code into a functionally equivalent but extremely difficult-to-understand version. It’s not encryption. it’s a structural rearrangement that makes human readability a nightmare. Think of it like shuffling a deck of cards while keeping them in a specific order for the computer. Minification, on the other hand, is about removing unnecessary characters whitespace, comments to reduce file size, which also has a secondary benefit of making the code slightly harder to read. Bypass list proxy

  • How it Works:
    • Renaming: Variables, function names, and properties are renamed to short, meaningless characters e.g., calculateTotal becomes _0xabc123.
    • String Concealing: String literals are encoded or split, making it harder to search for specific keywords or API endpoints.
    • Control Flow Flattening: The execution flow of your code is altered, making it non-linear and harder to follow through static analysis. Loops and conditional statements are replaced with switch statements or goto-like structures.
    • Dead Code Injection: Irrelevant code is added to confuse reverse engineers without affecting actual functionality.
  • Tools:
    • UglifyJS: A popular JavaScript minifier and obfuscator.
    • Terser: A modern JavaScript parser and mangler/compressor toolkit.
    • JavaScript Obfuscator Tool obfuscator.io: A robust online tool offering various obfuscation techniques.
  • Benefits:
    • Deters Reverse Engineering: Makes it time-consuming and expensive for attackers to understand your business logic.
    • Reduces Code Size: Improves loading times for users.
    • Prevents Tampering: Makes it harder to identify and modify critical functions.
  • Limitations:
    • Not Foolproof: Determined attackers with enough resources can eventually de-obfuscate code. It’s a deterrent, not a complete lock.
    • Debugging Challenges: Obfuscated code is difficult to debug in production environments.
  • Best Practice: Combine obfuscation with other layers of security. Don’t rely solely on it. For instance, if you’re building a complex web application, consider obfuscating only critical client-side logic, not the entire codebase.

Anti-Tampering and Anti-Debugging Techniques

These techniques aim to detect if an attacker is trying to modify your code or debug it in real-time, and then react accordingly, perhaps by terminating the script or sending a flag to the server.

*   Checksum Verification: Your JavaScript code computes a checksum of itself or critical parts of its code. If the checksum changes indicating tampering, the script can halt or alert.
*   Debugger Detection: Scripts can look for `debugger` statements, `console.log` calls being active, or specific properties of the `window` or `document` objects that indicate a debugger is attached.
    *   Example: `if window.performance && window.performance.mark && window.performance.measure { /* debugger likely active */ }`
*   Function Overriding Detection: Critical browser functions like `setTimeout`, `eval` can be wrapped to detect if an attacker is trying to override them.
*   Code Integrity Checks: Using `Function.prototype.toString` to compare original function code against its current state can reveal modifications.
  • Tools/Libraries:
    • Custom JavaScript logic for debugger checks.
    • Some advanced obfuscation tools include built-in anti-tampering features.
    • Active Defense: Provides immediate feedback or disruption when an attack is underway.
    • Raises Attack Cost: Forces attackers to spend more time bypassing these checks.
    • Bypassable: Sophisticated attackers can often bypass or patch out these checks.
    • Performance Overhead: Constant checking can introduce minor performance penalties.
  • Real-world Use: Many online gaming platforms and financial applications implement these to deter botting and client-side fraud. For example, some online card games use anti-tampering to ensure players aren’t manipulating the deck or hand outcomes.

Content Security Policy CSP: Whitelisting Your Code

CSP is a powerful security header that web servers send to browsers, instructing them on which resources scripts, stylesheets, images, fonts, etc. are allowed to be loaded and executed on a given page. It’s your browser’s bouncer for external content.

*   Directives: CSP uses directives like `script-src`, `style-src`, `img-src`, `connect-src` to specify allowed sources.
*   `script-src`: The most critical directive for JavaScript protection. It specifies valid sources for JavaScript.
    *   `script-src 'self'`: Only allows scripts from the same origin.
    *   `script-src 'self' https://trusted-cdn.com`: Allows scripts from your domain and a specific CDN.
    *   `script-src 'nonce-randomstring'`: Allows only scripts with a matching `nonce` attribute, dynamically generated for each request, preventing injection of static scripts.
    *   `script-src 'sha256-hashofscript'`: Allows only inline scripts that match a specific SHA-256 hash.
*   `object-src 'none'`: Prevents the loading of Flash or other plugin content, reducing attack surface.
*   `default-src 'self'`: A fallback policy if specific directives aren't provided.
*   `report-uri`: Directs browsers to send violation reports to a specified URL, allowing you to monitor and adjust your policy.
  • Implementation:
    • HTTP Header: Content-Security-Policy: script-src 'self'. object-src 'none'.
    • Meta Tag: <meta http-equiv="Content-Security-Policy" content="script-src 'self'">
    • Mitigates XSS: Significantly reduces the impact of Cross-Site Scripting XSS attacks by preventing malicious injected scripts from executing. This is arguably its biggest win.
    • Prevents Data Injection: Stops unauthorized resources from being loaded.
    • Reduces Attack Surface: By disallowing unsafe-inline and unsafe-eval, you eliminate common XSS vectors.
    • Complexity: Can be challenging to implement correctly, especially with complex applications using many third-party scripts.
    • unsafe-inline and unsafe-eval: While often necessary for legacy code, these directives weaken CSP. Aim to eliminate them.
  • Statistic: According to a study by Google, sites with a strong CSP that disallows unsafe-inline and unsafe-eval are 85% less likely to be vulnerable to XSS attacks.

Input Validation and Output Encoding: The First Line of Defense

These are fundamental security practices that apply to all web development, not just JavaScript, but they are absolutely critical for preventing client-side attacks like XSS.

Think of it as sterilizing your data before you process or display it.

  • Input Validation:
    • What it is: Ensuring that all data received from the user via forms, URL parameters, headers, etc. conforms to expected formats, types, and ranges. This should always happen on the server-side, but client-side validation provides a better user experience and can deter simple attacks.
    • How it Works:
      • Whitelisting: Define what is allowed e.g., only alphanumeric characters, specific email format, numbers within a range. Reject anything else.
      • Data Types: Check if a field expected to be a number actually is a number.
      • Length Limits: Enforce maximum and minimum lengths for strings.
      • Regular Expressions: Use regex to validate complex patterns like URLs, email addresses, or phone numbers.
    • Example: /^+@+\.+{2,4}$/ for email validation.
  • Output Encoding:
    • What it is: Converting untrusted input into a safe representation before rendering it in the browser’s HTML, attribute, JavaScript, or URL context. This prevents the browser from interpreting user-supplied data as executable code.
      • HTML Entity Encoding: Converting characters like <, >, &, ", ' into their HTML entity equivalents &lt., &gt., &amp., &quot., &#x27.. This is crucial when displaying user-generated content within HTML.
      • JavaScript String Escaping: Escaping special characters within JavaScript strings to prevent them from breaking out of the string context and executing arbitrary code.
      • URL Encoding: Escaping characters in URL components e.g., to %20.
    • Prevents XSS: The primary defense against XSS by stopping malicious scripts from being injected and executed.
    • Prevents SQL Injection/Command Injection: Server-side validation Stops malicious data from being used in backend queries or commands.
    • Maintains Data Integrity: Ensures your application processes clean, expected data.
    • Requires Strictness: Any oversight can create a vulnerability.
    • Context-Specific: The correct encoding method depends on where the data is being rendered HTML, attribute, JavaScript, URL. Using the wrong one is a common mistake.
  • Key takeaway: Never trust user input. Always validate on the server-side and encode on the output side.

API Security and Server-Side Validation

While the focus is on JavaScript protection, client-side security is ultimately futile without robust server-side API security.

Your JavaScript only communicates with the server, and if that communication channel or the server itself is compromised, no amount of client-side hardening will save you.

*   Authentication & Authorization:
    *   Authentication: Verify the user's identity e.g., using JWTs, OAuth2, session tokens.
    *   Authorization: Ensure the authenticated user has permission to perform the requested action.
*   Rate Limiting: Prevent brute-force attacks and abuse by limiting the number of requests a user or IP can make within a given timeframe.
*   Input Validation Server-side: This is non-negotiable. Re-validate all client-side inputs on the server. Never trust client-side validation alone.
*   API Gateway: Use an API gateway to centralize security policies, rate limiting, and request routing.
*   Secure Communication HTTPS/TLS: Encrypt all communication between client and server using HTTPS to prevent eavesdropping and Man-in-the-Middle MitM attacks.
*   CORS Cross-Origin Resource Sharing: Properly configure CORS headers to control which origins are allowed to make requests to your API, preventing unauthorized cross-origin requests.
*   Logging and Monitoring: Implement comprehensive logging of API requests and responses. Monitor for unusual activity, failed authentications, or high error rates, which could indicate an attack.
*   Ultimate Defense: The server is the ultimate authority. If the server is secure, even compromised client-side code cannot cause catastrophic damage.
*   Protects Data Integrity: Prevents unauthorized data manipulation.
*   Scalability: Centralized security measures simplify management.
*   Complexity: Designing and implementing secure APIs can be complex, especially for large-scale applications.
*   Constant Vigilance: Requires ongoing monitoring and updates to counter new threats.
  • Statistic: According to a report by Akamai, 80% of credential stuffing attacks target APIs, highlighting the critical need for robust API security.

Regular Security Audits and Penetration Testing

Even with the best intentions and implementations, vulnerabilities can creep into your code.

Regular security audits and penetration testing are crucial for identifying weaknesses before malicious actors do.

*   Code Review: Manual inspection of source code by security experts to identify potential vulnerabilities, design flaws, and misconfigurations.
*   Automated Static Application Security Testing SAST: Tools that analyze source code or compiled code without executing it, looking for common vulnerabilities e.g., SQL injection, XSS, insecure deserialization.
    *   Tools: SonarQube, Checkmarx, Fortify.
*   Automated Dynamic Application Security Testing DAST: Tools that test the running application by simulating attacks, looking for vulnerabilities that manifest at runtime e.g., misconfigured headers, broken authentication, logic flaws.
    *   Tools: OWASP ZAP, Burp Suite Professional, Acunetix.
*   Penetration Testing: Ethical hackers pen-testers are hired to simulate real-world attacks, attempting to exploit vulnerabilities in your application. They often combine automated tools with manual techniques and creative thinking.
*   Bug Bounty Programs: Incentivize ethical hackers and security researchers to find and report vulnerabilities in your application.
*   Proactive Vulnerability Discovery: Identifies weaknesses before they are exploited.
*   Compliance: Helps meet regulatory compliance requirements e.g., GDPR, HIPAA.
*   Improved Security Posture: Continuously strengthens your application's security.
*   Cost-Effective in the Long Run: Finding and fixing vulnerabilities early is far cheaper than dealing with a breach.
*   Cost: Professional penetration testing and advanced SAST/DAST tools can be expensive.
*   Requires Expertise: Interpreting findings and implementing fixes requires skilled developers and security professionals.
*   Snapshot in Time: A single audit only reflects security at that moment. new code or changes can introduce new vulnerabilities.
  • Recommendation: Aim for at least annual penetration tests for critical applications, and integrate SAST/DAST tools into your CI/CD pipeline for continuous security scanning.

Supply Chain Security for JavaScript Dependencies

Modern JavaScript applications rely heavily on open-source libraries and frameworks.

While incredibly efficient, this also introduces a significant supply chain risk. Log proxy

A single vulnerable dependency can compromise your entire application.

*   Dependency Scanning: Tools that scan your `node_modules` or `package-lock.json` or equivalent for known vulnerabilities by comparing them against public vulnerability databases e.g., OWASP Dependency-Check, Snyk, WhiteSource.
*   Software Bill of Materials SBOM: Generate an SBOM to get a complete, accurate list of all components and dependencies in your application. This aids in vulnerability management.
*   Vetting Dependencies: Before incorporating a new library, check its popularity, maintenance status, community activity, and known security issues.
*   Integrity Checks: Use subresource integrity SRI for CDN-hosted scripts to ensure the script hasn't been tampered with.
    *   Example: `<script src="https://example.com/example-framework.js" integrity="sha384-oqVuAfXRKaK+AQBf8c47Fj+G6p9e6c4Yj+C7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c7+c

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave a Reply

Your email address will not be published. Required fields are marked *