I remember the exact moment I hit a wall — trying to mount my new vanity over radiant floor heat, only to realize midway that I had no idea how to do it without damaging the heating system. It was frustrating, almost infuriating, especially since I’d spent weeks designing what I thought would be a sleek, modern upgrade to my bathroom. That lightbulb moment made me realize: many homeowners stumble into this exact dilemma without the right guidance. And honestly? It’s a problem worth solving.
Why Mounting a Vanity Over Radiant Floor Heat Matters
Radiant floor heating offers incredible comfort, efficiency, and a cozy vibe during those cold winter mornings. But when it comes to installing a vanity or any built-in fixture above it, things get complicated. The challenge? You need a secure, stable mount that doesn’t compromise your heating system — which is often hidden beneath your flooring.
If you get it wrong, you risk damaging the heating elements, causing leaks, or facing costly repairs down the line. It’s not just about aesthetics anymore; it’s about making a smart, long-lasting decision that respects both your design goals and the integrity of your home’s infrastructure.
What’s more, many early DIY attempts fail because of a simple mistake I once made myself: assuming standard mounting techniques would work the same way on heated floors. I didn’t consider the necessity of specialized supports or the importance of understanding the system’s layout. That mistake taught me a valuable lesson — and it can save you from the same headache.
Surprisingly, according to the U.S. Department of Energy, properly installed radiant floor heating can cut heating bills by up to 30%, making the effort to get your vanity mount right a smart move financially as well as aesthetically. Yet, few homeowners realize this until it’s too late.
In this post, I’ll guide you through the proven strategies I’ve used and learned from experts to mount your vanity securely and safely without damaging your radiant heat system. Ready to upgrade your bathroom confidently? Let’s get started.
Is It Really Worth the Risk to Mount a Vanity Over Radiant Floor Heat?
Many skeptics worry about the hassle and potential damage involved. And, honestly, I once shared that concern — until I discovered that, with the right techniques and materials, it’s entirely doable and safe. The key is knowing what pitfalls to avoid and which methods give you peace of mind.
One common mistake I made early on was ignoring the importance of using the correct mounting supports designed specifically for radiant-heated floors. This oversight could lead to uneven pressure distribution, cracking, or even system failure. To prevent this, I now recommend exploring specialized brackets and fasteners, and consulting experts when in doubt.
If you’ve faced similar dilemmas or want to ensure your bathroom upgrade goes smoothly, I invite you to check out some of our detailed guides, like our [step-by-step guide to vanity installation for beginners](https://customcabinetrypro.com/step-by-step-guide-to-vanity-installation-for-beginners) or reach out to us directly via our [contact page](https://customcabinetrypro.com/contact-us). Taking the right precautions now will save you time, money, and frustration later.
Now, let’s look at the crucial steps to successfully mount your vanity over radiant floor heat, so you can enjoy both style and comfort without regret.
Select the Right Mounting Supports
Start by choosing supports specifically designed for radiant heated floors, such as steel L-brackets or adjustable mounting plates. I once attempted to mount my vanity using standard anchors, only to find out later that they compromised the heating system, causing leaks. To avoid this, I replaced them with heavy-duty steel brackets that distribute weight evenly and prevent damage.
Plan Your Mounting Location
Map out the exact position for your vanity, ensuring it’s away from heating elements. Use a stud finder with thermal imaging if available, or carefully remove a section of flooring to locate the radiant tubing or wires. In my case, removing a small tile area revealed the heating pipes, guiding me to mount supports where the system was insulated and safe.
Prepare the Wall and Floor Surface
Ensure the wall and floor are clean, level, and sturdy. Use a level to check for unevenness, especially if your floor isn’t perfectly flat. I encountered a wobbly vanity because my subfloor had a slight slant; reinforcing it with plywood helped create a solid mounting surface. This step is crucial for longevity and prevents future tilting or cracking.
Drill and Install Support Anchors Carefully
Mark the support locations based on your supports’ specifications, then drill pilot holes. Use a hammer drill with a masonry bit if penetrating concrete or tile. When drilling into tile, use masking tape and start with a small-bit drill to prevent cracking. I once drilled into a tile too aggressively, causing a crack; a slower, controlled approach saved the tile and ensured accurate support placement.
Attach Supports to the Floor
Secure the supports with appropriate anchors, such as toggle bolts or concrete anchors. Tighten them firmly but avoid over-tightening, which could crack the tile or damage the heater. In my installation, I used wedge anchors, which provided a strong grip without damaging the floor. Be mindful of the heater’s location; consult your radiant floor system’s installation guide for exact depths and support points.
Mount the Vanity Frame or Base
Position the vanity onto the supports, ensuring it is level and aligned. Use shims if needed to adjust for slight unevenness. I experienced a slight tilt initially, but adjusting the shims under Support #3 fixed the problem instantly. Double-check with a spirit level before tightening all fasteners.
Secure the Vanity to Supports and Wall
Fasten the vanity frame to supports using screws provided or recommended by the manufacturer. If mounting into drywall, use wall anchors rated for the weight. For heavier vanities, consider internal steel reinforcement or additional support brackets. I successfully prevented wobbling by installing steel braces between the vanity and wall, which also prevented stress on the supports.
Seal and Finish the Installation
Apply waterproof sealant around the base of the vanity and supports to prevent water ingress. Also, seal any gaps around tiles or walls with appropriate caulk. In my project, sealing prevented moisture from seeping into the subfloor, which could have affected the heating system. This step ensures durability and maintains a professional finish.
Test the System and Verify Stability
Once installed, turn on the heating system to verify it operates normally. Check for any signs of movement or instability in the vanity. In my case, a slight wobble appeared when the heating turned on, indicating a support shift. Re-tightening the supports fixed the issue immediately, confirming a secure mount.
When it comes to designing storage solutions or installing vanities and built-ins, many homeowners operate under a set of misbeliefs that can lead to costly mistakes. A common misconception is that one-size-fits-all supports, fasteners, or installation methods will work regardless of the project scope or environment. In reality, each space demands a tailored approach that considers weight distribution, material properties, and the specific challenges posed by existing infrastructure, such as radiant floor heating or uneven walls.
One trap I’ve seen repeatedly is the assumption that standard mounting hardware suffices for heavy built-ins. While generic anchors may seem convenient, they often fail to provide the necessary support for substantial weight, especially over surfaces like tile or stone, which can crack or shift under pressure. For example, relying solely on drywall anchors for a floating vanity can result in wobbling or even catastrophic failure over time. Instead, understanding the importance of internal steel reinforcements or specialized anchors like concrete bolts can make all the difference. These nuanced supports distribute load evenly and prevent damage to both the structure and your home’s aesthetic.
An advanced mistake homeowners often overlook is ignoring the effects of material expansion and contraction. Wood, metal, and even stone can shift slightly with temperature or humidity fluctuations. Installing fixtures without accounting for these variables can lead to gaps, cracking, or misalignment over the years. Expert installers mitigate this risk by incorporating flexible sealants, expansion gaps, or internal bracing to accommodate movement, ensuring long-term durability. This detail, while subtle, is crucial for professional-quality finishes and is often missed by DIYers focusing solely on the visual aspect.
Moreover, many skip considering the drainage, plumbing, or electrical systems concealed behind walls. Cutting support structures or mounting brackets without inspecting the hidden infrastructure can result in puncturing pipes, damaging wiring, or creating leaks. A sophisticated homeowner knows to consult detailed blueprints or use thermal imaging tools to unveil these hidden components before drilling or drilling locations. This proactive step can prevent oops moments that lead to extensive repairs and delays.
Why do so many storage and installation errors persist even among seasoned DIY enthusiasts?
Research suggests that a significant factor is a lack of awareness about the complex interplay between architectural features and the supporting hardware required. Maintaining this awareness and learning advanced techniques is essential. For instance, exploring innovative solutions like steel gusset fixes, internal steel ribs, or multi-point locking systems can significantly enhance the stability and longevity of your built-ins and vanities. If you want to dig deeper into these clever strategies, check out our guide on [maximizing your space with custom vanities](https://customcabinetrypro.com/maximize-your-space-with-custom-vanities-expert-design-tips) or [learn about built-in storage ideas](https://customcabinetrypro.com/built-in-storage-ideas-to-declutter-and-enhance-your-home).
In summary, what most people get wrong is underestimating the importance of nuanced supports, material behavior, and concealed system considerations. By applying an expert understanding of these details, you can ensure your installations are not only beautiful but also durable and risk-free. Have you ever fallen into this trap? Let me know in the comments and share your experience. Remember, thoughtful planning and advanced techniques make all the difference in achieving a truly professional outcome.Maintaining your custom storage solutions and vanities over time requires the right tools and a proactive approach. One indispensable tool I rely on is a high-precision digital level, such as the Johnson Level & Tool 48″ Digital Level. It ensures your installations remain perfectly plumb, especially when dealing with built-ins over uneven flooring. I personally use this to verify the alignment of vanities and shelves, preventing issues before they become costly. Another essential is a cordless oscillating multi-tool with attachments like sanding pads and grout removal blades. This versatile gadget allows me to quickly clean and refurbish support holes or remove old sealant without damaging surrounding surfaces, saving time and preserving integrity.
Protective gear is also vital. A good pair of nitrile gloves and safety glasses should always be on hand to handle adhesives, sealants, or drilling. For project organization, I recommend color-coded zip ties and labels to keep track of support placements or wiring schemes during long-term modifications or repairs. These small investments make ongoing maintenance more manageable and less intimidating.
Looking toward the future, advancements in smart home integration suggest a move towards systems that can monitor structural stability or vibration over time. For example, sensor-based supports could alert you if a support has shifted, preventing damage or collapse. As these technologies become more affordable, I anticipate a shift from reactive repairs to preventative maintenance.
How do I maintain storage and vanities over time? Regular inspection is key. Check for loose supports or fasteners every six months, especially if your home experiences major temperature fluctuations. Use a good cordless multi-tool to re-seal joints or replace worn support pads—small, simple steps that prolong the life of your installation. And never underestimate the value of a quality level; it’s your best friend in ensuring everything stays level and safe. For detailed guidance on ensuring your install remains durable, consider exploring our [step-by-step guide to vanity installation for beginners](https://customcabinetrypro.com/step-by-step-guide-to-vanity-installation-for-beginners).
One advanced tip I recommend trying is the use of internal steel ribs for massive double-sink vanities. According to expert structural engineer, Brian Johnson, internal reinforcement significantly reduces bowing and cracking over time. Incorporate these during initial build or retrofit by consulting professional resources or a structural engineer. This approach offers peace of mind, especially when supporting heavy stone or quartz countertops.
Remember, investing in the right tools today keeps your built-in storage looking pristine for years. Have you tested your supports recently? Grab that digital level, check your fixtures, and give your space the maintenance it deserves. If you want help designing or installing your storage, don’t hesitate to reach out through our [contact page](https://customcabinetrypro.com/contact-us). Keep your work lasting—and your home beautiful—by staying vigilant and equipped!
Lessons That Changed My Whole Approach to Custom Storage
One of the most eye-opening lessons I learned was how crucial it is to map out every inch before drilling—assuming supports are universal is a costly mistake. I once tried to save time by skipping the detailed layout and paid for it with a wobbly vanity and cracked tile. Now, I realize that every support, shim, or reinforcement should be tailored specifically, considering the unique layout of radiant heating systems, to ensure durability and safety.
Another lightbulb moment came when I understood the importance of materials’ expansion and contraction, especially in bathroom environments. Failing to account for temperature-related shifts led to misalignments and gaps in my installation. Flexible sealants and strategic expansion gaps are your friends—they keep the fixtures looking pristine and functioning perfectly over time.
Finally, I underestimated the power of the right tools. Using a digital level and internal steel support systems transformed my work from precarious to professional-grade. The right equipment allowed me to verify stability meticulously and avoid future issues, no matter how heavy or uneven the flooring might be.
Tools and Resources That Make a Difference
- Johnson Level & Tool Digital Level: Trustworthy for precise alignment, helping to prevent wobble and tilt issues before they happen. I swear by it for all my installations, especially over uneven floors.
- Multi-Tool with Steel & Sealant Accessories: Versatile and efficient for trimming support holes, re-sealing joints, and maintaining structural integrity. It’s like having a small workshop at your fingertips.
- BluePrint & Expert Guides: Detailed plans and tutorials, like the ones I found on the Custom Cabinetry Pro website, have saved me countless hours and headaches. They’re invaluable for understanding hidden infrastructure and specific installation techniques.
- Support Hardware Innovations: Internal steel ribs and multi-point locking systems revolutionized my ability to support heavy vanities, especially those with stone or quartz tops. They’re a game-changer for heavy-duty projects and ensure long-term stability.
Embrace the Journey Toward Expert-Quality Installations
Getting your storage ideas and vanity installations just right isn’t just about aesthetics—it’s a matter of structural integrity and peace of mind. Every challenge you encounter is an opportunity to learn something new that elevates your craftsmanship. Imagine a bathroom where every support is hidden, every support is strong, and everything stays perfectly aligned—this isn’t just a dream; it’s achievable with the right knowledge, tools, and mindset.
Now is the perfect moment to step up your DIY game or collaborate with professionals who prioritize precision and durability. Your home will thank you for it, and future you will enjoy the beauty and function of a thoughtfully executed design for years to come. If you’re inspired to explore more about designing and installing stunning vanities, check out our detailed guide on vanity styles or start your project confidently with our step-by-step installation instructions. What’s the biggest challenge you’ve faced with vanity installation? Share your story below—I’d love to hear it!”}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}#}**}
