a:6:{i:0;s:21213:"				<div class="h1"><h1>Shangrila Highlight Tour (7 nights / 8 days)</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>Shangrila Highlight Tour (7 nights / 8 days)</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">04</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						7 Nights / 8 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 1930 Per Person						</td>
						</tr>
												<tr>
						<td class="b p5px dif w125px vat">Special Offer </td>
						<td class="p5px pl0px dif vat">Special discount for direct clients(those who contact directly)from above rates</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="Shangrila Highlight Tour (7 nights / 8 days) - 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="114383"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/507122/186873.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507122/186873.jpg"  width="150" height="150"    alt="Shangrila Highlight Tour (7 nights / 8 days)" title="Shangrila Highlight Tour (7 nights / 8 days)" /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/507122/186874.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507122/186874.jpg"  width="150" height="150"    alt="Shangrila Highlight Tour (7 nights / 8 days)" title="Shangrila Highlight Tour (7 nights / 8 days)" /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/507122/186876.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507122/186876.jpg"  width="150" height="150"    alt="Shangrila Highlight Tour (7 nights / 8 days)" title="Shangrila Highlight Tour (7 nights / 8 days)" /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/507122/186878.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507122/186878.jpg"  width="150" height="150"    alt="Shangrila Highlight Tour (7 nights / 8 days)" title="Shangrila Highlight Tour (7 nights / 8 days)" /></a></p></div></li>
																		<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/507122/186879.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507122/186879.jpg"  width="150" height="150"    alt="Shangrila Highlight Tour (7 nights / 8 days)" title="Shangrila Highlight Tour (7 nights / 8 days)" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Special discount for direct clients(those who contact directly)from above ratesAir Ticket,Guide and Driver Tips,Personal Expenses02-1231-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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Arrive Paro (Altitude 2280 m) (By Druk Air) – Thimphu (2320 m) (Distance: 54 km, 1 hr drive):<br />
<br />
Your Guide from Exotic Vacations Bhutan will receive you at the Airport and drive to Thimphu. On the way, view Tamchog Monastery built by Thangthong Gyalpo (Popularly known as Lama Chazampa, which literally means, the Iron Bridge builder) in the 15th century.<br />
<br />
Thang Thong Gyalpo (1385 – 1464) was a wonder working saint from Tibet who came to Bhutan in 1433 looking for Iron Ore. He built 108 bridges across Tibet and Bhutan, out of which 8 were built in Bhutan. His only surviving bridge is in Duksum (Tashi Yangtse in Eastern Bhutan).<br />
Dinner and overnight in Hotel Migmar or similar.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Thimphu Sightseeing: (Altitude 2320 m)<br />
<br />
The day begins with a visit to the National Memorial Chorten (1974) built in honour of our 3rd King, late His Majesty Jigme Dorji Wangchuk (The Father of Modern Bhutan),  Tallest Statue of Buddha, Changangkha Lhakhang, Takin Preserve center, Sangaygang view point, and the Dupthop Lhakhang one of the few surviving nunneries in Bhutan.<br />
<br />
After lunch, visit National Postal Museum, which is worth a visit for you can get your own picture on Bhutanese stamp right then and there. Get a photo clicked then and there or give a photo of your dear ones and you will get personalized stamps in 5 minutes followed by a visit to the Painting School where traditional art is still kept alive through instructions in the art of painting Thangkas (sacred Buddhist religious scrolls) and Folk Heritage Museum. In the evening, visit to the Tashichho Dzong, seat of the national government and the Central Monastic Body, including the summer residence of the Je Khenpo (Chief Abbot of Bhutan) and finally visit the Handicrafts Emporium followed by shopping for souvenirs in the shops of Thimphu. Dinner and overnight in Hotel Migmar or similar.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Thimphu – Punakha: (Altitude 1310 m) (76 Km, 3 hrs drive).<br />
<br />
Shangrila Highlight Tour<br />
<br />
After breakfast, drive to Punakha via Dochula pass. We stop for a while at Dochula pass to view Higher Himalayas. Drive further down and visit the Royal Botanical Garden at Lamperi.<br />
<br />
The Royal Botanical park, also known as the Rhododendron Garden at Lamperi is about half and hour drive towards Punakha/Wangdue. With your spirits still high from the visit to the awesome sites of Dochula Pass with its 108 stupas and the beautifully arranged Himalayan mountain ranges, you will descend down to Rhododendron Botanical Garden, a nature reserve rich in flora and fauna and beautiful in itself. The recorded species are the monal pheasants, blood pheasants, musk deer, tiger, leopard, red panda and the leopard cat. A Rhododendron garden with 46 species of the plant is the theme of the botanical garden. Located 30 KMS from capital, the park has numerous view points, a lake and a canteen. At this park, you can indulge yourself amongst these rich biodiversity.<br />
Drive further to Punakha. On the way, view Chimi Lhakhang, which was built by Lama Drukpa Kuenley (Popularly known as “The Divine Madman”, in the year 1499. He subdued the demons with his “Magical Thunder bolt” and built the temple on top of a hillock. The Temple is also known as “the Temple of Fertility”.<br />
<br />
Lama Drukpa Kuenley (1455 – 1529) was one of the Bhutan’s Favourite Saints who was born in Tibet, trained at Ralung Monastery and was a contemporary and a disciple of Pema Lingpa. He Travelled throughout Bhutan and Tibet as a “Neljorpa” (Yogi) using songs, humour and outrageous behavior to dramatise his teachings of Salvation through sex.<br />
After lunch, visit Punakha Dzong built in 1637 by Shabdrung Ngawang Namgyal and is situated between Pho Chu (Male River) and Mo Chu (Female River). For many years until the time of the second king, it served as the seat of the Government. The construction of the Dzong was foretold by Guru Rimpoche, who predicted, “…a person named Namgyal will arrive at a hill that looks like an elephant”. There was a smaller building here called Dzong Chu (Small Dzong) that housed a statue of Buddha. It is said that Shabdrung ordered the architect, Zowe Palep, to sleep in front of the statue, while Palep was sleeping; the Shabdrung took him in his dreams to Zangtopelri and showed him the palace of Guru Rimpoche. From his vision, the architect conceived the design for the new Dzong, which in keeping with the tradition, was never committed to paper. The Dzong was named Druk Pungthang Dechen Phodrang (Palace of Great Happiness). The war materials captured during the battle with Tibetans are preserved here. Punakha is still the winter residence of Je-Khenpo and King Jigme Dorji Wangchuk convened the First National Assembly here in 1952.<br />
<br />
In the evening, excursion to Khamsung Yulley Namgyal Choling Monastery. Dinner and overnight in Punatshangchhu Cottages or similar.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Punakha – Gangtey (Altitude 3120 m) (66 km, 3 hrs):<br />
<br />
After breakfast, drive to Gangtey. Enroute sightseeing in the valley of Wangdiphodrang includes visit to the Wangdiphodrang Dzong (razed by fire in 2012), & under construction (from outside) built in 1638. Legend relates that as the people were searching for the site of the Dzong; four ravens were seen flying away in four directions. This was considered auspicious sign, representing the spread of Buddhist religion to the four points of the compass. The Dzong is situated at the confluence of Mo Chu and Tang Chu rivers. Drive further to Gangtey.<br />
<br />
While in Gangtey, visit Gangtey Gompa. Gyaltse Pema Thinley, the grandson and mind reincarnation of Pema Lingpa founded the Temple in 1613, and Tenzin Legpai Dhendup, the second re-incarnation, built the temple. The present Abbot, Kunzang Pema Namgyal is the ninth re-incarnation. It is a Nyingmapa monastery and is affiliated to other Nyingmapa monasteries including Tamshing in Bumthang.<br />
<br />
After lunch, explore Phobjikha valley, the roosting ground of the Rare Black necked Cranes in winter and visit the Crane Information center. Dinner and overnight in Theckchen Phodrang Guest house or similar.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Gangtey – Thimphu: (Altitude 2320 m) (143 km – 6 hrs.)<br />
<br />
After breakfast, drive to Thimphu. Lunch, will be served on the way.<br />
<br />
Time permitting, witness the archery match in Changlimithang. In the evening, free for shopping and photography in the town. Dinner and overnight in Hotel Migmar or similar.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Thimphu – Paro: (Altitude 2280 m, Distance 58 km, Drive Time 1 hour):<br />
<br />
Shangrila Highlight Tour<br />
<br />
After breakfast, drive to Paro and visit Ta Dzong (built in1656 and renovated in 1968), an ancient watchtower, which now houses the National Museum. Below the museum is the Paro Rimpung Dzong (literally meaning “Heap of Jewels”, built in 1646 by Shabdrung Ngawang Namgyal, the centre of civil and religious authority in this valley. A short walk takes you to the base of the dzong and across a traditional cantilevered, covered bridge.<br />
<br />
After lunch, visit to the ruins of the Drukgyal Dzong 16 km up the valley built in 1647 by the great Shabdrung Ngawang Namgyal, father and unifier of medieval Bhutan, the dzong was destroyed by accidental fire and left in ruins as an evocative reminder of the great victories it was built to commemorate. Explore the ramparts and on a clear day experience an unforgettable view of Mt. Jhomolhari (7,314 m). On the way back, visit Kichu Lhakhang, built in 659 A.D by the Tibetan king Srongsen Gampo.<br />
<br />
Srongsen Gampo: He was a Tibetan king who married a Chinese princess, Wenchen in 641, as a part of her dowry was a statue called “Jowo” which was an Indian image of Buddha, Sakyamuni as a small boy. In 659, He decided to build 108 Temples in a single day to pin the Ogress to the earth forever and, at the same time, convert the Tibetan people to Buddhism. 6 of these Temples lie in Bhutan, most prominent of them are Jambay Lhakhang in Bumthang and Kichu Lhakhang in Paro. Kichu Lhakhang is said to hold the left foot of the Ogress and Jambay Lhakhang pins the left knee.<br />
Dinner and overnight in Tashi Namgay Resort or similar.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Paro Sightseeing: (Altitude 2280 m).<br />
<br />
After breakfast, drive to the base of the monastery and hike to Taktsang Monastery: a short drive takes us to Satsam Chorten, from there a 2 hour walk till the viewpoint point of the monastery. The trail climbs through beautiful pine forest, many of the trees festooned with Spanish moss, and an occasional grove of fluttering prayer flags. We stop for a rest and light refreshments at the Taktsang Jakhang (cafeteria) and then walk a short distance until we see, clearly and seemingly within reach, Taktsang monastery. The primary Lhakhang was built around Guru Rimpoche’s meditation cave in the 1684by the Penlop of Paro Gyaltse Tenzin Rabgay, this incredible monastery clings to the edge of a sheer rock cliff that plunges 900 meters into the valley below. Legend has it that Guru Padmasambhava, the tantric mystic who brought Buddhism to Bhutan, flew here on the back of a flying tiger, Dorji Drolo, said to be his favourite consort.<br />
<br />
NB: You can hoist prayer flags near the Tiger’s Nest, and offer prayers inside the monastery.  You can also request lama to pray for you.<br />
<br />
Hot stone bath: One of the best ways to unwind after a long day in Bhutan is the hot stone bath. It is not only practiced as a comforting soak but also to treat various alignments.  Soaking in Menchu with (Water with medicinal properties) is one of the favorite activities for Bhutanese, especially during the winters. The cost for one bath is US$10.<br />
<br />
Dinner and overnight in Tashi Namgay Resort or similar.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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> Shangrila Highlight Tour (7 nights / 8 days)
								</p>
								<p class="aj">Departure: (Altitude 2280 m) Early morning, drive to the airport and farewell.</p>					
									<p><b>Meals : </b> AP(Breakfast,Lunch,Dinner)</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>3 Star Hotel</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Airport Pickup-Drop</li>
																		<li>Private Cab</li>
																		<li>Private Guides</li>
																		<li>Sim Card</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 Ticket,Guide and Driver Tips,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">Departure Cities with rates :</p>Peak Season(March,April,May,September,October,November)
Off season(January,February,June,July,August,December)<br /><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</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="Shangrila Highlight Tour (7 nights / 8 days) - 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="114383"/>
						</form>
						</div>
						
						";i:1;s:83:"Book Shangrila Highlight Tour (7 nights / 8 days) - 7 Nights / 8 Days Tour Packages";i:2;s:143:"book shangrila highlight tour (7 nights / 8 days) - 7 nights / 8 days tour packages, valley tour packages, thimphu, paro, punakha tour packages";i:3;s:183:"Exotic Vacations Bhutan offers Shangrila Highlight Tour (7 nights / 8 days) - 7 Nights / 8 Days tour package, budget Valley tour packages for Thimphu, Paro, Punakha at exciting price.";i:4;s:576:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Thimphu, Paro, Punakha"        
		                 },
		      "description": "Special discount for direct clients(those who contact directly)from above ratesAir Ticket,Guide and Driver Tips,Personal Expenses02-1231-12",
		      "name": "Shangrila Highlight Tour (7 nights / 8 days)",
		      "telephone": "+975-77685791"
		    }
		    </script>
			";i:5;N;}