a:6:{i:0;s:12560:"				<div class="h1"><h1>Glimpse Of Bhutan 5 Nights / 6 Days Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.exoticvacationsbhutan.biz/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.exoticvacationsbhutan.biz/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Glimpse Of Bhutan 5 Nights / 6 Days Package</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Tour Code </td>
						<td class="p5px pl0px vat">01</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Thimphu, Paro, Punakha</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						USD 1375 Per Person						</td>
						</tr>
												<tr>
						<td class="b p5px dif w125px vat">Special Offer </td>
						<td class="p5px pl0px dif vat">15% will be offered to the direct Clients</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.exoticvacationsbhutan.biz/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Glimpse Of Bhutan 5 Nights / 6 Days Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="126630"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					15% will be offered to the direct ClientsAir Tickets<br />
Guide<br />
Driver tips<br />
Personal Expenses11-0431-12<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> ARRIVE PARO INTERNATIONAL AIRPORT
								</p>
								<p class="aj">Upon arrival at Paro International airport, you will be welcomed by our company representative and the tour guide will receive and escort you to designated Hotels. In the afternoon drive to the ruins of the 17th Century Drukgyel Dzong, an historic monument built by the Zhabdrung to commemorate his victory against invading Tibetans in 1644. In fine weather the towering peak of the sacred Mount Jomolhari (7314m) appears as a stunning backdrop. On the return visit 7th Century Kyichu Lhakhang, one of the 108 temples constructed by the Tibetan king Songtsen Gampo. Overnight at Paro.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> PARO - THIMPHU
								</p>
								<p class="aj">After breakfast, drive to Thimphu - world's smallest capital. Upon arrival at Thimphu you will start sightseeing tour visiting Memorial Chorten built in memory of the 3rd King Jigme Dorji Wangchuck who reigned the Kingdom from 1952 - 1972. Visit the National Library where ancient manuscripts are preserved. Further, we will visit the Zorig Chusum - 13 Arts & Crafts Institute where traditional arts and crafts are still kept alive. The visitors can see students of different trades at work like: Sculpting, Thanka Painting, Wood Carving and other skills. In the evening free for a leisure walk to explore Thimphu city - the world's smallest capital and the only capital city where Traffic Lights are absent. The walk around the city is easy and would be enjoyable to experience the Bhutanese way of life. Overnight at Thimphu.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> THIMPHU - PUNAKHA
								</p>
								<p class="aj">Today you drive to Punakha, an ancient capital of Bhutan over the Dochu - La pass (3,100 meters), which on a clear day offers an incredible view of Himalayan peaks before descending into balmy Punakha valley. In the Dochu - La area there are vast Rhododendron forests that grow to tree size and bloom in late April/early May covering the mountains in a riot of glorious spring colour.<br />
<br />
On arrival at Punakha, visit Punakha Dzong, the "Palace of Great Happiness" built in 1637 by the Shabdrung, the 'Unifier of Bhutan'. It was here in 1907 that Bhutan's first king was crowned. After lunch, enjoy a walk to Chimi Lhakhang, temple of the Drukpa Kuenly who is also known as the Divine Madman. He inherited the Divine Madman title since he revolted against the orthodox Buddhism in his time. He taught the people that religion is an inner feeling and it's not necessary that one should be an ordained monk. Overnight at Punakha.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> PUNAKHA - PARO
								</p>
								<p class="aj">In the morning drive to Yabesa village and hike to through rice fields and up to Khamsum Yueley Namgyal Chorten, built by her majesty the queen Ashi Tshering Yangdon Wangchuk. Perched high on a hill on the bank of the river, the Chorten houses paintings belonging to Nyingmapa Traditions<br />
<br />
Drive back to Thimphu where you will have an opportunity to visit handicraft and souvenir stores. Afterwards proceed to Paro, visiting Semtokha Dzong en route. The Dzong, built in 1627, is the oldest in Bhutan. On arrival in Paro, check into the hotel. Evening stroll through the charming Paro town. Overnight at Paro.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> HIKE TO PARO TAKTSHANG
								</p>
								<p class="aj">Hike to Tiger's Nest, one of the most sacred Taktshang monasteries in Bhutan. It is perched on the cliff where Guru Rinpoche is said to have flown to the site riding on a tigress. He subsequently meditated here for three months. You can have lunch at the Taktshang cafeteria from where you get a spectacular view of the monastery.<br />
<br />
Return to Paro, where we may have more time for stroll around the town. Farewell dinner in the evening. Overnight at Paro</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> DEPART PARO
								</p>
								<p class="aj">The guests will be Seen Off by a Representative of our company and the Tour Guide at the Exit Gate. Wish Bon Voyage!!!</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>2 Star Hotel</li>
																		<li>3 Star Hotel</li>
																		<li>4 Star Hotel</li>
																		<li>5 Star Hotel</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
																		<li>Airport Pickup-Drop</li>
																		<li>Private Cab</li>
																		<li>Private Guides</li>
																		<li>Entry Tickets</li>
																		<li>Sim Card</li>
																		<li>Bus Transfer</li>
																		<li>Cab Transfer</li>
																		<li>Stay Included</li>
																		<li>Non Veg Meals</li>
																		<li>Veg Meals</li>
																		<li>Veg & Non Veg Meals</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air Tickets</li><li>
Guide</li><li>
Driver tips</li><li>
Personal Expenses</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>All season awaits<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<header>
<h1><strong>Cancellation Policy</strong></h1>
</header>

<p><strong>Tour programs booked and subsequently cancelled shall be subject to cancellation charges as follows:</strong>

<table>
	<tbody>
		<tr>
			<td>1</td>
			<td>Within 45 days of the start of the tour program</td>
			<td>15% of the total tour cost</td>
		</tr>
		<tr>
			<td>2</td>
			<td>Within 30 days</td>
			<td>25% of the total tour cost</td>
		</tr>
		<tr>
			<td>3</td>
			<td>Within 21 days</td>
			<td>30% of the total tour cost</td>
		</tr>
		<tr>
			<td>4</td>
			<td>Within 15 days</td>
			<td>50% of the total tour cost</td>
		</tr>
		<tr>
			<td>5</td>
			<td>Less than 7 days</td>
			<td>100% of the total tour cost</td>
		</tr>
	</tbody>
</table>

<p><strong>DELAYED ARRIVAL/DEPARTURE</strong>

<ul>
	<li>There shall be no fixed charge for the number of days of delay in arrival of visitors due to weather conditions, Druk - air problems or road blocks except for minimum charge on hotel cancellation, transport and guide.</li>
	<li>There shall be no charge for the number of days of delay in departure of visitors due to weather conditions, Druk - Air problems or roadblocks. They will be charged only the actual expenses on accommodation, food, transport, guide and any other services required.</li>
</ul>

<p><strong>DRUK AIR CANCELLATION POLICY:<br />
Tickets issued and cancelled shall be subject to cancellation charges as follows:</strong>

<ul>
	<li>Within 45 days of the start of travel: no charges except documentation fees</li>
	<li>Within 30 days of the start of travel: 50% of the fare</li>
	<li>Within 15 days of the start of travel: 100% (No refund)</li>
	<li>Name Change: USD 25 per ticket</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.exoticvacationsbhutan.biz/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Glimpse Of Bhutan 5 Nights / 6 Days Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="126630"/>
						</form>
						</div>
						
						";i:1;s:82:"Book Glimpse Of Bhutan 5 Nights / 6 Days Package - 5 Nights / 6 Days Tour Packages";i:2;s:148:"book glimpse of bhutan 5 nights / 6 days package - 5 nights / 6 days tour packages, hill station tour packages, thimphu, paro, punakha tour packages";i:3;s:188:"Exotic Vacations Bhutan offers Glimpse Of Bhutan 5 Nights / 6 Days Package - 5 Nights / 6 Days tour package, budget Hill Station tour packages for Thimphu, Paro, Punakha at exciting price.";i:4;s:537:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Thimphu, Paro, Punakha"        
		                 },
		      "description": "15% will be offered to the direct ClientsAir Tickets
Guide
Driver tips
Personal Expenses11-0431-12",
		      "name": "Glimpse Of Bhutan 5 Nights / 6 Days Package",
		      "telephone": "+975-77685791"
		    }
		    </script>
			";i:5;N;}