a:6:{i:0;s:19777:"				<div class="h1"><h1>Bhutan: From East To West 14 Days Tour</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>Bhutan: From East To West 14 Days Tour</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">05</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						13 Nights / 14 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Thimphu, Paro, Punakha, Trongsa, Mongar, Bumthang, Samdrup Jongkhar, Trashigang</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						USD 3195 Per Person						</td>
						</tr>
												<tr>
						<td class="b p5px dif w125px vat">Special Offer </td>
						<td class="p5px pl0px dif vat">15% discount will be offered to those who contact directly</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="Bhutan: From East To West 14 Days Tour - 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="126657"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					15% discount will be offered to those who contact directlyAir Tickets,Guide and Driver tips and 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> ARRIVAL - WELCOME TO KINGDOM OF BHUTAN
								</p>
								<p class="aj">Upon arrival at Gauwahati Airport, you will be welcomed by our company representative and transferred to Samdrup Jongkhar. You will drive by small villages, past bicycle paths through the famous Assam Tea garden. In the evening free for a leisure walk to explore Samdrup Jongkhar town. Overnight at Samdrup Jongkhar.</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> SAMDRUP JONGKHAR - TRASHIGANG
								</p>
								<p class="aj">Today after early breakfast, you will drive a distance of 180-km for about 6 hours to Trashigang. Admire the diverse flora and fauna and stops for photo session along the highway. Your today's lunch will be at Warmrong. After Lunch you will continue to drive through Kharung La pass to khaling. Visit the khaling Handloom supported by the National Women's Association of Bhutan, where you will witness the traditional style of weaving. En route you will see the Bhutan's first and premier Sherubtse College in Kanglung. Descending down the road will take you to Trashigang. Overnight in Trashigang.</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> TRASHIGANG SIGHTSEEING
								</p>
								<p class="aj">Drive for an hour to the Monastic School, which is the biggest Nyimapa school in the east. En route, you will stop off to take some photos in front of rice fields, colourful houses, picturesque villages, prayer flags, chortens and prayer wheels.<br />
<br />
Visit Radhi Village and get a tip or two about how to weave like a local! These villagers are known for their beautiful textiles, woven out of raw silks. Then, feel spiritual at the nunnery in Radhi, before you continue on to Phogme. You might even meet some of the fascinating Sakten community. They're known to venture down to trade their yak products for daily necessities.<br />
<br />
In the evening drive back to Tashigang, stopping off en route at Ranjung Village. Overnight at Trashigang.</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> TRASHIGANG - MONGAR
								</p>
								<p class="aj">The road ascends towards the Kori La Pass 23900 M (Gradient 4-6%), opening out onto breath-taking mountains and villages. On arrival at Mongar you will visit Mongar Dzong which is built in 1970s and it houses about 200 monks. Overnight at hotel.</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> MONGAR - BUMTHANG
								</p>
								<p class="aj">Prepare for the journey towards the cultural heartland of Bumthang. You will be driving through dense forest, past waterfalls, remote villages and high passes. This area is a paradise for bird watchers. You can make numerous stops on the way for pictures, and stretch your legs in the beautiful nature. Head to Ura village before continuing towards Bumthang for an overnight stay.</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> BUMTHANG SIGHTSEEING
								</p>
								<p class="aj">In Bumthang you can visit many sacred temples and monasteries. Today you'll be visiting Kurje Lhakhang where legend tells that the Great Indian Saint Guru Padsambhava subdued a local demon and left his body imprint on a rock.<br />
<br />
The second site on the agenda is Jamphel lhakhang, which was built in the 7th Century by Songsten Goembo, the Tibetan Buddhist King. Jakar Dzong, (the fortress of the White Bird), is another must-see landmark. Next stop: Tamshing Ihakhang built in 1501 by Terton Pema Lingpa (the founder of religious treasures); followed by Kunchosum lhakhang and Membertsho (the Flaming Lake). Legend has it that Pema Lingpa discovered several religious texts by the Lake. Overnight at Bumthang.</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 7:</b> BUMTHANG - TRONGSA
								</p>
								<p class="aj">Transfer to Trongsa to visit Trongsa Dzong, yet another majestic architectural masterpiece and once Ancient Bhutan's capital. Its historic significance is such that every King, before ascending the Throne, must serve as the Penlop (Governor) of Trongsa.<br />
<br />
The Ta-Dzong or Watch Tower of Trongsa was converted to a museum in 2008. The museum hosts about 244 items used over the years by the Wangchuck dynasty. It also displays the famous Raven Crown used by the first King. Overnight at Trongsa.</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 8:</b> TRONGSA - PHOBJIKHA
								</p>
								<p class="aj">En route to Phobjikha, stop off at Chendipji Stupa. It resembles the Boudhanath Stupa in Nepal, with eyes painted on at four cardinal points.<br />
<br />
Next, you will drive further south to Phobjikha Valley, one of the most beautiful valleys in Bhutan and home to the rare black-necked crane, who migrate from Tibet to Bhutan for the winter (from November-March). You'll also visit Gangtey Gompa, one of the oldest Nyingmapa monasteries. Hike down to the valley to take in a stunning view of the surrounding villages. Overnight at hotel.</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 9:</b> PHOBJIKHA - PUNAKHA
								</p>
								<p class="aj">The journey to Punakha takes about 3 hours and consists of a scenic drive through beautiful forests of rhododendron, fields of dwarf bamboo, green meadows, wildflowers, waterfalls and ever changing vegetation. Your journey descends further south into the low-lying sub tropical valley of Punakha, which served as the capital of Bhutan until 1955.<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 10:</b> PUNAKHA - THIMPHU
								</p>
								<p class="aj">Today you drive to Thimphu (capital of Bhutan). Two hours later, you will drive at Dochula Pass (3,100 meters), which offers a spectacular view over the snow-capped eastern Himalayan Ranges, consisting of peaks averaging massive heights of 6,000m to 7,554m! The Pass is decorated with 108 stupas (chortens) built around a mound.<br />
<br />
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. Overnight at Thimphu.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> HIKE TO TANGO MONASTERY
									</p>
									<p class="aj">After breakfast, you will drive about 45 minutes north of Thimphu then hike to the Tango Buddhist Institute. Tango is located on a site considered sacred from times immemorial. In the year 1689 AD, the monastery was built by the Gyelse Tenzin Rabgyel, the 4th Desi (temporal ruler of Bhutan). Today, the monastery serves as the largest Buddhist institute in the country.<br />
<br />
In the afternoon, we move on to Changangkha Lhakhang, built in 13th century overlooking Thimphu Valley. The temple boasts the only sitting Buddha of Compassion in the country. Afternight 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 12:</b> THIMPHU - PARO
									</p>
									<p class="aj">We begin our journey towards Paro, stopping off en route to visit Tachhogang Iron Bridge. Upon arrival in Paro, you'll visit Paro Rimpong Dzong ('Fortress on a Heap of Jewels'), followed by the Ta Dzong, which was formerly a Watch Tower and now the country's national museum.<br />
<br />
Later, you will visit Kyichu Temple, one of the oldest temples in Bhutan built by King Songtsen Gyempo of Tibet in 659 AD. Legend has it that it is one of the 108 temples that the King built within a year around the Himalayan region.</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 13:</b> HIKE TO PARO TAKTSHANG
									</p>
									<p class="aj">A visit to Bhutan is incomplete without venturing to Paro Taktshang (Tiger's Nest), one of the most sanctified and sacred Temples in Bhutan. The trail is broad and the walk of approximately 1.5 to 2 hours uphill takes you almost a kilometer above the Paro valley. It is perched on the cliff where Guru Rimpoche is said to have flown here on the back of a tigress when he brought the teachings of the Buddhist Dharma to Bhutan in the 8th Century. He subsequently meditated here for three months. The cave is said to be the origin of Buddhism in Bhutan. Nearby there is a teahouse where you can stop for refreshments before returning to Paro for lunch.<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 14:</b> EBD OF THE TOUR
									</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>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<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>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,Guide and Driver tips and personal expenses</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>All Seasons Awaits<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<header>
<h1>Cancellation Policy</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>

<h5>*&nbsp;DELAYED ARRIVAL/DEPARTURE</h5>

<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:</strong>

<p><u>Tickets issued and cancelled shall be subject to cancellation charges as follows:</u>

<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="Bhutan: From East To West 14 Days Tour - 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="126657"/>
						</form>
						</div>
						
						";i:1;s:79:"Book Bhutan: From East To West 14 Days Tour - 13 Nights / 14 Days Tour Packages";i:2;s:207:"book bhutan: from east to west 14 days tour - 13 nights / 14 days tour packages, beach and islands tour packages, thimphu, paro, punakha, trongsa, mongar, bumthang, samdrup jongkhar, trashigang tour packages";i:3;s:264:"Book Bhutan: From East To West 14 Days Tour - 13 Nights / 14 Days tour packages from Exotic Vacations Bhutan - Get attractive 13 Nights / 14 Days Beach and Islands  tour packages for  Thimphu, Paro, Punakha, Trongsa, Mongar, Bumthang, Samdrup Jongkhar, Trashigang.";i:4;s:611:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Thimphu, Paro, Punakha, Trongsa, Mongar, Bumthang, Samdrup Jongkhar, Trashigang"        
		                 },
		      "description": "15% discount will be offered to those who contact directlyAir Tickets,Guide and Driver tips and personal expenses11-0431-12",
		      "name": "Bhutan: From East To West 14 Days Tour",
		      "telephone": "+975-77685791"
		    }
		    </script>
			";i:5;N;}