a:6:{i:0;s:37395:"				<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
									<div class="h1"><h1>Bhutan Package</h1></div>
					<p class="breadcrumb ar uu small"><a href="http://www.swaraworldtrip.com/" title="Home">Home</a>
					
											<b class="ffv p2px">&rsaquo;</b><a href="http://www.swaraworldtrip.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
											
					<b class="ffv p2px">&rsaquo;</b>Bhutan Package</p> 
									
						<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">
					
											<p class="mb5px"><b>Duration :</b> 
						6 Nights / 7 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Thimphu, Paro, Punakha, Phuntsholing</p>
												<p class="mb5px"><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.swaraworldtrip.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Bhutan Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="125772"/>
						</form>
						
												</p>
											</td>
											<td class="p10px vat imgWidth200 w200px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w200px h200px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_11/304395/203837.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_11/304395/203837.jpg"  height="150"  width="150"    alt="Bhutan" title="Bhutan" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
													<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Tour Detail</p>
								</div>
													
								3*/4* Hotels, Twin/triple Sharing,  Map Plan, Pick Up / Drop to Bagdora Airport, <br />
entrance and Immigration Exp. Rs 1500 per Person Extra<br />
<br />
itinerary- (06 Night/07 Days)<br />
day: 1 Bagdogra to Phuntsholing- 170kms ---<br />
arrival At Bagdogra Airport & Departure for Phuntsholing (170 Kms. 04-05 Hrs.)take the Permit to Visit Bhutan.<br />
overnight Stay At Hotel.<br />
day: 2 Phuntsholing to Thimpu – 180kms<br />
post Breakfast Drive Towards Thimphu and After Reaching Thimphu Visit the Following:<br />
kuensel Phodrang:the Kuensel Phodrang or the Buddha Point is the World’s Largest Sitting Buddha Statue, The<br />
statue is 167 Feet High. the Statue is Situated On Top of a Hill Overlooking the City of Timphu, It Can Be Accessed By<br />
road and is About 15 Minutes Away from the City‟s Center. the Word Kuensel Means Everything is Clear and From<br />
this Place You Will Sure Enjoy a Great View of the Thimphu Valley On Both Sides. the Statute Will House a Temple<br />
inside It, the Statue and Its Adjoining Car Park and Recreational Center are Currently Under Construction and Is<br />
expected to Be Ready By December 2012. the Statue is Constructed Out of Bronze and is Studded with Many Semiprecious<br />
stones. Since They are No Factories in Country that Can Make such a Large Bronze Cast Structure,<br />
statute is Being Manufactured in China and the Pieces are Brought to Bhutan and are Assembled Here. On The<br />
drive to the Statue the Steep Winding Hill Road Offers An Unparalleled View of the City of Thimphu and is An<br />
excellent Place to Capture a View of the City Especially After Dark. a Journalist Once Described the View As<br />
“seeing An Osasis of Light in the Desert of Darkness “as the City Light of Thimphu Shine Very Bright in An<br />
otherwise Dark Thimphu Valley.<br />
later in the Evening You Can Visit Tashichho Dzong: the Dzong is a Buddhist Monastery Cum Fortress At The<br />
northern Edge of Thimpu the Capital City of Bhutan. the Dzong Was Built On the Western Bank of the River Wang<br />
chu, and Has Historically Served At the Seat of the Druk Desi or the Dharma Raja of Bhutan‟s Government. After<br />
the Kings Assumed Power in 1907 this Post Was Combined with that of the King and Thimphu Severed as The<br />
summer Caital of the Kingdom Before Becoming the Full Time Capital of Bhutan. the Original Thimphu Dzong (the<br />
dho-ngyen Dzong) is Said to have Been Constructed in 1216 By Lama Gyalwa Lhanangpa. and Was Later Taken Over<br />
by Lama Phajo Drukgom Shigpo Before the Dzong Was Conquered By Shabdrung Ngawang Namgyal, Who Found<br />
the Dzong to Be Too Small and Expanded It to What is Now Known as Thetashichho Dzong is also Called The<br />
"fortress of Glorious Religion." It Was Erected in 1641 and Was Subsequently Rebuilt By King Jigme Dorji<br />
wangchuck in the 1960s. the Dzong Has Been Seat of the Royal Government Since 1952 and Presently Houses The<br />
throne Room and the Kings Secretariat. the Tashichho Dzong is also Home to Several Ministries of the Bhutanese<br />
government, and the Central Monk Body Which is the Apex Organization of the Country's Main Spiritual<br />
order. the Monument Welcomes Visitors During the Thimphu Tsechu Festival Which is Held in Autumn Each Year.<br />
the Dzongs Main Structure is a Two Striped Quadrangle with 3 Storied Towers On Each of Its Four Corners<br />
over Night At Thimphu.<br />
day: 3 Thimpu Sightseeing & Punakha<br />
post Breakfast, Visit the Following:<br />
motithang Takin Preserve: the Motithang Takin Preserve also Known as the Thimphu Zoo By Many is a Small<br />
natural Preserve for the Takin Bhutan‟s National Animal. It Was Originally a Mini Zoo, But It Was Converted in A<br />
preserve Later On as the Takin. the Mini Zoo Contained a Small Number of Takin But the King of Bhutan Later<br />
decreed that It Was Improper for a Buddhist Nation to Keep An Animal in Captivity. the Animals Were Set Free And<br />
the Zoo Was Shut Down, But for Some Reason the Takin Refused to Leave the Area for the Forests Nearby. Instead<br />
the Animals Were Frequesntly Found Roaming Around the Streets of the Capital City in Search for Food. as a Result<br />
the Government Decided to Demarcate An 8 Acre Fenced Location as the Motithang Takin Preserve. the Preserve<br />
is a Forested Preserve that Mimics the Takin‟s Natural Habitat, in Addition to the Takin There are a Few Musk<br />
deer and Barking Deer that Live Inside the Preserve. There are Plans to Expand the Preserves Collection To<br />
include other Rarely Seen Animals that Live in Bhutan, Currently the Preserve Plans to Add the Red Panda and The<br />
himalayan Serow to the Preserve.<br />
jungshi Handmade Paper Factory: this is a Private Factory and They Manufacture a Special Watermark Paper As<br />
well as Products such as Lampshades, Envelopes and other Objects Made of Traditional Bhutanese Paper. They<br />
make Great Gifts to Take Home with You and are Genuinely Unique. It is Not Just the Texture of These Handmade<br />
paper Products that Will Intrigue You, But also Their Unique Earth Tones and Natural Hews. this Factory<br />
manufactures a Special Watermark Paper as Well as Products such as Lampshades, Envelopes and other Objects<br />
made of Traditional Bhutanese Paper. Bhutan Protects Its Environment Through Long-term Sustainability, And<br />
they Follow It Because They Do Not Destroy the Plant When They Extract the Raw Material Required. Paper<br />
products are Manufactured from "daphne Papyracea".<br />
folk Heritage Museum: the Folk Heritage Museum Was Open to the General Public in 2001 Upon Completion. It<br />
treasures Troves of Culture and Rich Bhutanese Heritage Provide Rich Insights Into the Bhutanese Ethos. Try To<br />
schedule Your Visit During the Morning Hours Since the Museum is Less Crowded At that Time and There is Plenty<br />
of Sunlight to Go Around. the Folk Heritage Museum is Housed in a Replica Traditional Bhutanese House Learn<br />
first-hand About Bhutan‟s Rich Cultural Traditions, Its Deeply Rooted Heritage Which Spans Thousands of Years<br />
and the Bhutanese Way of Life. the Tour of this Almost Living Museum Will also Give You a Glimpse Onto How Many<br />
rural Folk of the Country Live Today Following the Ancient Bhutanese Ways.<br />
memorial Chorten: Referred to as Thememorial Chorten, It’s Actual Name is Gongzo Chorten or Gyaldren Chorten.<br />
the Chorten (stupa) is a Chief Landmark in the Capital City and is also a Most Sacred Place of Worship for Local<br />
people. the Idea of the Chorten Was Conceptualized By the Third King His<br />
majesty Jigme Dorji Wangchuck to Ward-off Negative Energies. After His Majesty’s Demise, the Chorten Was Built<br />
in His Memory By the 4 Th King and the Then Queen Mother in 1972.many Old People Come Here Early in The<br />
morning to Circumambulate and Say Their Prayers in the Hopes of Garnering Enough Good Karma for Their<br />
afterlife; They are Joined By the Middle and the Younger Generation in the Evenings Who also Come to Do Either<br />
the Same Thing or to Just Relax Their Mind. the Doors of this Stupa Remain Mostly Closed Except On Holy Days.<br />
inside, There are Three Stories and On Each Floor are Statues of Protective Deities.<br />
coronation Park:located On the Banks of the River (near the City Stadium), this 5.6 Acres of Parkland Offer A<br />
pleasant and Relaxing Environment to Stroll or to Sit and Watch the River Flow By.<br />
craft Bazaar: Organised On Tuesday and Wednesday in Centenary Farmer’s Market, Under Patronage Of<br />
department of Cottage & Small Industry and in Collaboration with the Department of Culture, Tourism Council<br />
and the Department of Agriculture Marketing and Cooperatives, this Market Offers Genuine Bhutanese Arts<br />
& Crafts Thus Contributing in Promotion, Protection and Preservation of Traditional Arts.<br />
afternoon Transfer to Punakha, Via Dochu-la-pass (10,170 Ft.) to View the Higher Himalayas.<br />
drive Toward Punakha, Stop At Dochula Pass (3,100 M), Where On a Sunny Day, You Can Get Stunning Views of The<br />
himalayan Ranges. the Dochu La Pass is Probably the Best Known Mountain Pass in Bhutan. Located At An<br />
altitude of 3150 Meter Above Sea Level, the Dochu La Pass is About 30 Kilometer Away from the Capital City<br />
thimphu and the Road to Punakha. On a Clear Day the Pass Offers Visitors a Spectacular View of the Majestic<br />
eastern Himalayan Ranges. a Cup of Hot Coffee or Tea At the Pass Has Almost Become Part of Tradition for People<br />
travelling to and Fro from Punakha to the Capital City.<br />
there is a Small Cafeteria At the Pass that Offers a Chance for Travelers to Enjoy a Hot Beverage or a Snack, It Is<br />
located Just Off the Road and Overlooks the Pass and is An Ideal Place to Sit Back, Relax and Enjoy the View.<br />
another Striking Feature At the Pass are the 108 Druk Wangyal Khangzang Chortens, that Were Built for the Wellbeing<br />
of all Sentiment Beings On Earth. the 108 Chorten Were Built as a Tribute to the Kings of Bhutan for Their<br />
selfless Service and Leadership They Offer to the People of Bhutan. These Stupas or Chortens also Represent The<br />
peoples Love, Appreciation and Loyalty Towards the Country’s King.<br />
continue Drive Towards Punakha and Stop At Lobesa Village and have Lunch Before Going for a Short Hike to Chimi<br />
lhakhang (temple of Fertility), It is Dedicated to Lam Drukpa Kuenley (divine Mad Man) and is the Place From<br />
where Phalluses Originated as the Symbol of Fertility and Protection and Can Be Seen Everywhere in Bhutan, On<br />
house Walls and Roofs and Altars. Childless Couples Usually Go to this Temple to Get Blessings So that They<br />
conceive and are Blessed with a Child.<br />
(note: the Temple and Has Some Sexual Depictions. You May Want to Reconsider Visiting this Place if You are Not<br />
comfortable with Children Seeing These)<br />
then Drive to Punakha Dzong: the Punakha Dzong or the Pungtang Dechen Phortang Dzong is Located At The<br />
confluence of the Mo Chhu and the Po Chhu River, Combine to Form the Puna Tsang Chu Which in Turn is A<br />
tributary of the Mighty Brahmaputra River. the Dzong Was Constructed By Zhabdrung Ngawang Namgyal in 1638<br />
on the Exact Spot as Prophesized By the Guru Rinpoche Some 800 Years Ago. According to the Prophecy of Guru<br />
rinpoche “a Person Named Namgyal Will Arrive At a Hill that Looks like An Elephant”. Another Legend Associated<br />
with the Dzong is that of Zowe Palep, the Architect of the Dzong Received Vision of the Dzong in His Sleep. This<br />
vision Got Imprinted in the Architects Mind and Enabled Him to Construct the Dzong Without Putting His Plans To<br />
paper.<br />
it is the Second Largest and the Second Oldest Dzong in Bhutan. the Dzong is Home to Some of the Most Sacred<br />
relics of the Drukpa Kagyu School of Buddhism; It is also Home to the Sacred Mortal Remains of Zhabdrung<br />
ngawang Namgyal and Terton Pema Lingpa the Great Treasure Discoverer of Bhutan. the Dzong Has also Served<br />
as the Capital Bhutan Till 1955 Before the Capital Was Moved to Thimphu. the Dzong is Still the Winter Residence<br />
of the Je Khenpo (chief Abbot) and the Central Monastic Body and Plays Host to the Annual Punakha Tshechu<br />
festival Which is Very Popular with the Locals and Tourists Alike.<br />
overnight At a Hotel in Punakha.<br />
day: 4 Punakha to Paro - 145kms<br />
post Breakfast Drive Towards Paro Via Dochula Pass.<br />
on the Way Visit Tamchog Lhakhang: Tachog Lhakhang is Temple that is Dedicated to the 13th Century Saint<br />
thangthong Gyalpo, the Iron Bridge Builder. this Temple is Located Across the River About 15kms from the Paro<br />
towards Thimphu. in Order to Get to the Temple One Must Cross An Iron Chain Bridge, One of the Few Remaining Of<br />
the Many that Thangthong Gyalpo Built. Crossing this Very Old Bridge with Its Swaying and Undulating Movements<br />
can Be Quite An Experience.<br />
ta Dzong (national Museum): the Name Ta Dzong Translates to ‘watch Tower’ and It Served the Function of Watch<br />
tower for the Paro Rinpung Dzong. Back in the Day, Similar Look-out Points Were Built for other Dzongs<br />
(fortresses) to Counter Any Approaching Hostilities, for Those Were the Days of Frequent Strife. These Towers<br />
were Specifically Built High Atop Hills and other Vantage Points During the Old Days.presently Serving as The<br />
national Museum (since Late 60’s), It Houses An Array of Antiquities such as Ancient Thangka (exquisite Scroll<br />
painting), Mural Paintings and other Forms of Art Done By Great Personalities of Those Days, Original Textiles Of<br />
the Kingdom Which Represent the Culture that Still Flourishes, Weapons & Armour Used Back in the Day,<br />
household Objects Typical to the Bhutanese People’s Way of Life Back Then and Even Now, and other Natural And<br />
historical Artifacts.<br />
dumtse Lhakhang: It is a Private Temple Built By Lam Chazampa (thangthong Gyalpo) in the 13-14 Century. This<br />
is a Special Temple with 3 Floors Representing Hell, Earth and Heaven. all the Paintings and Artifacts in The<br />
temples are as Old as the Temple Itself. the Pillars Inside Were Installed By the Different Villages in Paro Valley,<br />
almost in a Competition like Way, Even Today the Names Villages are Engraved in the Pillars. Though the Temple Is<br />
situated Very Close to Town, the Lighting is Powered By Solar Power But is Not Lit Very Much as the Owners Fear<br />
the Lights Will Fade the Colors in the Paintings, So It is Essential to Take a Torch.<br />
drugyal Dzong Ruins: Literally Means 'bhutan's Victory Fortress', It Was Built to in 1654 By<br />
shabdrung Ngawang Namgyal to Commemorate the Victory Over the Tibetan Invaders and It Would also Control<br />
and Guard the Trade Between Bhutan and Tibet as It Stood Right On the Trade Trail. It Stands Atop a Small Hill With<br />
a Commanding View of the Valley Up and Below and On a Clear One Can Get to See the Beautiful Mount Jomolhari<br />
from Here. It Caught Fire in 1951 and Has Been in Ruins Since, Some Renovation Works have Been Carried Out But<br />
has Not Been Able to Go Full Swing. Although in Ruins, the Dzong is Still Beautiful to Look At and One Can Just Walk<br />
about Inside the Ruins Trying to Imagine How Things Were Before.<br />
overnight At Hotel in Paro.<br />
day: 5 Paro - Tiger’s Nest Hike----<br />
have Early Breakfast and Drive Up to the Base of Taktsang Monastery (tiger’s Nest): the Most Famous And<br />
sacred Site among all the Places in Bhutan. Guru Padmasambhava is Said to have Come Riding On a Flying<br />
tigress to this Place and Meditated in a Cave for 3 Months, It Wasn’t Until Zhabdrung Ngawang Namgyal Came<br />
to this Place and Meditated that It Gained the Popularity that It Has Now. the Present Structure is Said to Be Built<br />
in the 15 Th Century But Was Destroyed By Fire in 1998 and Has Been Restored.<br />
the Walk is About 2 Hours Till the Top Through Wide Pathways Which Was Built During the Restoration Works. One<br />
hour Into the Climb There is a Tea Point from Where You Get a Very Good View of the Monastery, They also Serve<br />
lunch Here. from There It’s About Another 45 Minutes Climb to the 2 Nd View Point and the Highest Point in The<br />
hike.<br />
after the Hike have Leisure Time in Paro Town. Just Walking Along Paro Town Itself is Exciting and Really Beautiful<br />
feelings to Enjoy Chilled and Fresh Air of Paro Eveniong.<br />
kyichu Lhakhang: Considered the Oldest Temple Along with Jampa and Kenchosum Lhakhang in Bumthang, It<br />
dates Back to the 7th Century When a Tibetan King Ordered 108 Temples to Be Built in a Single Night to Subdue A<br />
huge Ogress. It Was Later Renovated in the Mid 19th Century and in the Late 1960's By the Grand Queen<br />
mother.it is also Considered By Many to Be One of the Holiest Places in the Country. Inside the Compound is An<br />
orange Tree Which Always Has Oranges No Matter What the Season.<br />
overnight At a Hotel in Paro.<br />
day 06: Paro – Phuentsholing<br />
(distance: 200 Kms. / Driving Time: 7 Hrs. / Altitude of Phuentsholing: 293 Mts.)<br />
after Breakfast Check Out from Hotel and Transfer to Phuentsholing. On Arrival Check in At the Hotel.<br />
overnight Stay At Phuentsholing.<br />
day: 7 Phuentsholing to Bagdogra/kolkata<br />
<br />
entry Permit for Bhutan:<br />
<br />
indian Nationals Do Not Require Any Visa for Bhutan. a Permit Will Be Issued At the Entry Point On Production of A<br />
passport (with a Minimum Validity of 6 Months from the Date of Departure) or Voter Id (only Valid Document For<br />
issuing the Bhutan Entry Permit). the Traveler also Has to Carry Photocopy of the Travel Documents and 04<br />
passport Size Photographs. for Children, Original Birth Certificate in English and Student Id is Required.<br />
if You are Entering Bhutan Via Land, It is to Be Noted that the Permits are Issued Only During Working Days And<br />
hours. (monday to Friday Between 9 am to 4 Pm During Winter and 5 Pm During Summer). It is Suggested that The<br />
travelers Arriving in Phuentsholing On Friday Should Arrive Latest By 10 am in Order to Complete the Entry<br />
formalities. No Permits are Issued On Saturday, Sunday and Bhutan Government Holidays. However, During High<br />
season Depending Upon the Rush Immigration May Take Long Time to Issue the Permit. We Shall Not Be Responsible<br />
for Any Delay During Processing of Permit By the Immigration Authority. Please Keep Your Client Informed They<br />
may have to Stand On Long Queue During High Season to Obtain the Permit if Traveling Via Phuentsholing.<br />
special Permit for Places other Than Phuentsholing, Thimphu and Paro:<br />
special Permit is Required to Visit Places Beyond Thimphu and Paro From, the Department of Immigrations,<br />
thimphu. No Charges Will Be Applicable for this Permit. Please Bring 02 Passport Size Photographs and Voter Id<br />
card or Passport of Each Person Including Child. this Special Permit is Given Only After Guest Has Entered<br />
bhutan. Permits are Not Issued On Saturday, Sunday & Bhutan Govt. Holidays.<br />
railway Tickets, Local Transport.<br />
 Personal Expenses such as Laundry, Telephone Calls, Tips & Gratuity, Mineral Water,<br />
soft & Hard Drinks, Rafting, Rock Climbing, Paragliding, Porterage.<br />
 Additional Sightseeing or Extra Usage of Vehicle, Horse Riding, Doli/baggi, Rope<br />
way/electronics Lift, Khechara Gadi, River Boat/speed Boat, Gandola Ticket, Garden<br />
entrance Ticket, Pony Fide, Shikara Fide Etc. Bother Than Mentioned in the Itinerary.<br />
 Entrance Fees & Guide Charges.<br />
 Any Cost Arising Due to Natural Calamities Like, Landslides, Road Blockage, Political<br />
disturbances (strikes), Etc (to Be Borne By the Client, Which is Directly Payable On<br />
the Spot).<br />
 Any Increase in Taxes or Fuel Price, Leading to Increase in Cost On Surface<br />
transportation & Land Arrangements, Which May Come Into Effect Prior To<br />
departure. Photo Camera, Garden/any Entertainment Shoes Entry Fee.<br />
 Any Condition No Refund. Your Booking Confirmation is 100% Not Refundable Basis.<br />
 Room Heater Charges *service Tax. *insurance.<br />
 Anything Which is Not Included in the Inclusion.<br />
 Meals Outside of the Stated Meal Plan<br />
 Early Check in & Late Check Out At the Hotels (check in & Check Out Time 14.00 To<br />
12.00 Noon) Any other Services Not Specified Above.								</div>
								<br />
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>Meals</li>
																						<li>Sightseeing</li>
																						<li>Transport</li>
																						<li>Transfers</li>
																						<li>Airport Pickup-Drop</li>
																						<li>Veg Meals</li>
																			</ul>
								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Exclusions</p>
								</div>
								
								<ul><li>Railway Tickets, Local Transport.</li><li>
 Personal Expenses such as Laundry, Telephone Calls, Tips & Gratuity, Mineral Water,</li><li>
soft & Hard Drinks, Rafting, Rock Climbing, Paragliding, Porterage.</li><li>
 Additional Sightseeing or Extra Usage of Vehicle, Horse Riding, Doli/baggi, Rope</li><li>
way/electronics Lift, Khechara Gadi, River Boat/speed Boat, Gandola Ticket, Garden</li><li>
entrance Ticket, Pony Fide, Shikara Fide Etc. Bother Than Mentioned in the Itinerary.</li><li>
 Entrance Fees & Guide Charges.</li><li>
 Any Cost Arising Due to Natural Calamities Like, Landslides, Road Blockage, Political</li><li>
disturbances (strikes), Etc (to Be Borne By the Client, Which is Directly Payable On</li><li>
the Spot).</li><li>
 Any Increase in Taxes or Fuel Price, Leading to Increase in Cost On Surface</li><li>
transportation & Land Arrangements, Which May Come Into Effect Prior To</li><li>
departure. Photo Camera, Garden/any Entertainment Shoes Entry Fee.</li><li>
 Any Condition No Refund. Your Booking Confirmation is 100% Not Refundable Basis.</li><li>
 Room Heater Charges *service Tax. *insurance.</li><li>
 Anything Which is Not Included in the Inclusion.</li><li>
 Meals Outside of the Stated Meal Plan</li><li>
 Early Check in & Late Check Out At the Hotels (check in & Check Out Time 14.00 To</li><li>
12.00 Noon) Any other Services Not Specified Above.</li></ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li><p>1. Above rates are subject to change with our prior notice.<br /></li><li>
2. Above rates are subject to availability & confirmation by hotel<br /></li><li>
3. The Company in no way shall be responsible for Flight Miss, Any loss, injury or damage to person or property<br /></li><li>
in connection with the transportation, caused by acts of strikes, pilferage, breakdown of machinery, accidents ,<br /></li><li>
Snow fall etc. All Sightseeing depends on Permits, weather & road condition.<br /></li><li>
4. The tours is non transferable and non refundable.<br /></li><li>
5. All Transfers on a shared basis in a coach (seat-in-coach)<br /></li><li>
6. Booking charges extra 5% per person<br /></li><li>
7. Cost will be increase when passenger will less.<br /></li><li>
IMPORTANT FACTS</p></li></ul>					
								</div>
												</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-kodaikanal.htm" title="Packages in Kodaikanal">Kodaikanal</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-singapore-city.htm" title="Packages in Singapore">Singapore</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-washington.htm" title="Packages in Washington">Washington</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-san-francisco.htm" title="Packages in San Francisco">San Francisco</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-ooty.htm" title="Packages in Ooty">Ooty</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-jodhpur.htm" title="Packages in Jodhpur">Jodhpur</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-srinagar.htm" title="Packages in Srinagar">Srinagar</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-nainital.htm" title="Packages in Nainital">Nainital</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/packages-in-darjeeling.htm" title="Packages in Darjeeling">Darjeeling</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-munnar.htm" title="Packages in Munnar">Munnar</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-jaisalmer.htm" title="Packages in Jaisalmer">Jaisalmer</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-hong-kong.htm" title="Packages in Hong Kong">Hong Kong</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-gulmarg.htm" title="Packages in Gulmarg">Gulmarg</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-pahalgam.htm" title="Packages in Pahalgam">Pahalgam</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-orlando-usa.htm" title="Packages in Orlando">Orlando</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-jaipur.htm" title="Packages in Jaipur">Jaipur</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-mysore.htm" title="Packages in Mysore">Mysore</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-new-york.htm" title="Packages in New York">New York</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-las-vegas.htm" title="Packages in Las Vegas">Las Vegas</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-udaipur.htm" title="Packages in Udaipur">Udaipur</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-brisbane.htm" title="Packages in Brisbane">Brisbane</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-thimphu.htm" title="Packages in Thimphu">Thimphu</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-guangzhou.htm" title="Packages in Guangzhou">Guangzhou</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-mount-abu.htm" title="Packages in Mount Abu">Mount Abu</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-yamunotri.htm" title="Packages in Yamunotri">Yamunotri</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-goa-city.htm" title="Packages in Goa City">Goa City</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-dharamshala.htm" title="Packages in Dharamshala">Dharamshala</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-varanasi.htm" title="Packages in Varanasi">Varanasi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/packages-in-puri.htm" title="Packages in Puri">Puri</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/heritage-holidays-catid.htm" title="Heritage Packages">Heritage</a> <b class="alpha50 bn small">(21)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/beach-islands-holidays-catid.htm" title="Beach and Islands Packages">Beach and Islands</a> <b class="alpha50 bn small">(12)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/mountain-climbing-holidays-catid.htm" title="Mountain Climbing Packages">Mountain Climbing</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/paragliding-holidays-catid.htm" title="Paragliding Packages">Paragliding</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/river-rafting-holidays-catid.htm" title="River Rafting Packages">River Rafting</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(11)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Packages">Lakes & Rivers</a> <b class="alpha50 bn small">(9)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/safari-holidays-catid.htm" title="Safari Packages">Safari</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.swaraworldtrip.com/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.swaraworldtrip.com/adventure-holidays-catid.htm" title="Adventure Packages">Adventure</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
								
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:53:"Book Bhutan Package - 6 Nights / 7 Days Tour Packages";i:2;s:133:"book bhutan package - 6 nights / 7 days tour packages, hill station tour packages, thimphu, paro, punakha, phuntsholing tour packages";i:3;s:197:"Book Bhutan Package - 6 Nights / 7 Days tour packages from Swara Tours Packages Consultancy - Get attractive 6 Nights / 7 Days Hill Station  tour packages for  Thimphu, Paro, Punakha, Phuntsholing.";i:4;s:19148:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Thimphu, Paro, Punakha, Phuntsholing"        
		                 },
		      "description": "3*/4* Hotels, Twin/triple Sharing,  Map Plan, Pick Up / Drop to Bagdora Airport, 
entrance and Immigration Exp. Rs 1500 per Person Extra

itinerary- (06 Night/07 Days)
day: 1 Bagdogra to Phuntsholing- 170kms ---
arrival At Bagdogra Airport & Departure for Phuntsholing (170 Kms. 04-05 Hrs.)take the Permit to Visit Bhutan.
overnight Stay At Hotel.
day: 2 Phuntsholing to Thimpu – 180kms
post Breakfast Drive Towards Thimphu and After Reaching Thimphu Visit the Following:
kuensel Phodrang:the Kuensel Phodrang or the Buddha Point is the World’s Largest Sitting Buddha Statue, The
statue is 167 Feet High. the Statue is Situated On Top of a Hill Overlooking the City of Timphu, It Can Be Accessed By
road and is About 15 Minutes Away from the City‟s Center. the Word Kuensel Means Everything is Clear and From
this Place You Will Sure Enjoy a Great View of the Thimphu Valley On Both Sides. the Statute Will House a Temple
inside It, the Statue and Its Adjoining Car Park and Recreational Center are Currently Under Construction and Is
expected to Be Ready By December 2012. the Statue is Constructed Out of Bronze and is Studded with Many Semiprecious
stones. Since They are No Factories in Country that Can Make such a Large Bronze Cast Structure,
statute is Being Manufactured in China and the Pieces are Brought to Bhutan and are Assembled Here. On The
drive to the Statue the Steep Winding Hill Road Offers An Unparalleled View of the City of Thimphu and is An
excellent Place to Capture a View of the City Especially After Dark. a Journalist Once Described the View As
“seeing An Osasis of Light in the Desert of Darkness “as the City Light of Thimphu Shine Very Bright in An
otherwise Dark Thimphu Valley.
later in the Evening You Can Visit Tashichho Dzong: the Dzong is a Buddhist Monastery Cum Fortress At The
northern Edge of Thimpu the Capital City of Bhutan. the Dzong Was Built On the Western Bank of the River Wang
chu, and Has Historically Served At the Seat of the Druk Desi or the Dharma Raja of Bhutan‟s Government. After
the Kings Assumed Power in 1907 this Post Was Combined with that of the King and Thimphu Severed as The
summer Caital of the Kingdom Before Becoming the Full Time Capital of Bhutan. the Original Thimphu Dzong (the
dho-ngyen Dzong) is Said to have Been Constructed in 1216 By Lama Gyalwa Lhanangpa. and Was Later Taken Over
by Lama Phajo Drukgom Shigpo Before the Dzong Was Conquered By Shabdrung Ngawang Namgyal, Who Found
the Dzong to Be Too Small and Expanded It to What is Now Known as Thetashichho Dzong is also Called The
"fortress of Glorious Religion." It Was Erected in 1641 and Was Subsequently Rebuilt By King Jigme Dorji
wangchuck in the 1960s. the Dzong Has Been Seat of the Royal Government Since 1952 and Presently Houses The
throne Room and the Kings Secretariat. the Tashichho Dzong is also Home to Several Ministries of the Bhutanese
government, and the Central Monk Body Which is the Apex Organization of the Country's Main Spiritual
order. the Monument Welcomes Visitors During the Thimphu Tsechu Festival Which is Held in Autumn Each Year.
the Dzongs Main Structure is a Two Striped Quadrangle with 3 Storied Towers On Each of Its Four Corners
over Night At Thimphu.
day: 3 Thimpu Sightseeing & Punakha
post Breakfast, Visit the Following:
motithang Takin Preserve: the Motithang Takin Preserve also Known as the Thimphu Zoo By Many is a Small
natural Preserve for the Takin Bhutan‟s National Animal. It Was Originally a Mini Zoo, But It Was Converted in A
preserve Later On as the Takin. the Mini Zoo Contained a Small Number of Takin But the King of Bhutan Later
decreed that It Was Improper for a Buddhist Nation to Keep An Animal in Captivity. the Animals Were Set Free And
the Zoo Was Shut Down, But for Some Reason the Takin Refused to Leave the Area for the Forests Nearby. Instead
the Animals Were Frequesntly Found Roaming Around the Streets of the Capital City in Search for Food. as a Result
the Government Decided to Demarcate An 8 Acre Fenced Location as the Motithang Takin Preserve. the Preserve
is a Forested Preserve that Mimics the Takin‟s Natural Habitat, in Addition to the Takin There are a Few Musk
deer and Barking Deer that Live Inside the Preserve. There are Plans to Expand the Preserves Collection To
include other Rarely Seen Animals that Live in Bhutan, Currently the Preserve Plans to Add the Red Panda and The
himalayan Serow to the Preserve.
jungshi Handmade Paper Factory: this is a Private Factory and They Manufacture a Special Watermark Paper As
well as Products such as Lampshades, Envelopes and other Objects Made of Traditional Bhutanese Paper. They
make Great Gifts to Take Home with You and are Genuinely Unique. It is Not Just the Texture of These Handmade
paper Products that Will Intrigue You, But also Their Unique Earth Tones and Natural Hews. this Factory
manufactures a Special Watermark Paper as Well as Products such as Lampshades, Envelopes and other Objects
made of Traditional Bhutanese Paper. Bhutan Protects Its Environment Through Long-term Sustainability, And
they Follow It Because They Do Not Destroy the Plant When They Extract the Raw Material Required. Paper
products are Manufactured from "daphne Papyracea".
folk Heritage Museum: the Folk Heritage Museum Was Open to the General Public in 2001 Upon Completion. It
treasures Troves of Culture and Rich Bhutanese Heritage Provide Rich Insights Into the Bhutanese Ethos. Try To
schedule Your Visit During the Morning Hours Since the Museum is Less Crowded At that Time and There is Plenty
of Sunlight to Go Around. the Folk Heritage Museum is Housed in a Replica Traditional Bhutanese House Learn
first-hand About Bhutan‟s Rich Cultural Traditions, Its Deeply Rooted Heritage Which Spans Thousands of Years
and the Bhutanese Way of Life. the Tour of this Almost Living Museum Will also Give You a Glimpse Onto How Many
rural Folk of the Country Live Today Following the Ancient Bhutanese Ways.
memorial Chorten: Referred to as Thememorial Chorten, It’s Actual Name is Gongzo Chorten or Gyaldren Chorten.
the Chorten (stupa) is a Chief Landmark in the Capital City and is also a Most Sacred Place of Worship for Local
people. the Idea of the Chorten Was Conceptualized By the Third King His
majesty Jigme Dorji Wangchuck to Ward-off Negative Energies. After His Majesty’s Demise, the Chorten Was Built
in His Memory By the 4 Th King and the Then Queen Mother in 1972.many Old People Come Here Early in The
morning to Circumambulate and Say Their Prayers in the Hopes of Garnering Enough Good Karma for Their
afterlife; They are Joined By the Middle and the Younger Generation in the Evenings Who also Come to Do Either
the Same Thing or to Just Relax Their Mind. the Doors of this Stupa Remain Mostly Closed Except On Holy Days.
inside, There are Three Stories and On Each Floor are Statues of Protective Deities.
coronation Park:located On the Banks of the River (near the City Stadium), this 5.6 Acres of Parkland Offer A
pleasant and Relaxing Environment to Stroll or to Sit and Watch the River Flow By.
craft Bazaar: Organised On Tuesday and Wednesday in Centenary Farmer’s Market, Under Patronage Of
department of Cottage & Small Industry and in Collaboration with the Department of Culture, Tourism Council
and the Department of Agriculture Marketing and Cooperatives, this Market Offers Genuine Bhutanese Arts
& Crafts Thus Contributing in Promotion, Protection and Preservation of Traditional Arts.
afternoon Transfer to Punakha, Via Dochu-la-pass (10,170 Ft.) to View the Higher Himalayas.
drive Toward Punakha, Stop At Dochula Pass (3,100 M), Where On a Sunny Day, You Can Get Stunning Views of The
himalayan Ranges. the Dochu La Pass is Probably the Best Known Mountain Pass in Bhutan. Located At An
altitude of 3150 Meter Above Sea Level, the Dochu La Pass is About 30 Kilometer Away from the Capital City
thimphu and the Road to Punakha. On a Clear Day the Pass Offers Visitors a Spectacular View of the Majestic
eastern Himalayan Ranges. a Cup of Hot Coffee or Tea At the Pass Has Almost Become Part of Tradition for People
travelling to and Fro from Punakha to the Capital City.
there is a Small Cafeteria At the Pass that Offers a Chance for Travelers to Enjoy a Hot Beverage or a Snack, It Is
located Just Off the Road and Overlooks the Pass and is An Ideal Place to Sit Back, Relax and Enjoy the View.
another Striking Feature At the Pass are the 108 Druk Wangyal Khangzang Chortens, that Were Built for the Wellbeing
of all Sentiment Beings On Earth. the 108 Chorten Were Built as a Tribute to the Kings of Bhutan for Their
selfless Service and Leadership They Offer to the People of Bhutan. These Stupas or Chortens also Represent The
peoples Love, Appreciation and Loyalty Towards the Country’s King.
continue Drive Towards Punakha and Stop At Lobesa Village and have Lunch Before Going for a Short Hike to Chimi
lhakhang (temple of Fertility), It is Dedicated to Lam Drukpa Kuenley (divine Mad Man) and is the Place From
where Phalluses Originated as the Symbol of Fertility and Protection and Can Be Seen Everywhere in Bhutan, On
house Walls and Roofs and Altars. Childless Couples Usually Go to this Temple to Get Blessings So that They
conceive and are Blessed with a Child.
(note: the Temple and Has Some Sexual Depictions. You May Want to Reconsider Visiting this Place if You are Not
comfortable with Children Seeing These)
then Drive to Punakha Dzong: the Punakha Dzong or the Pungtang Dechen Phortang Dzong is Located At The
confluence of the Mo Chhu and the Po Chhu River, Combine to Form the Puna Tsang Chu Which in Turn is A
tributary of the Mighty Brahmaputra River. the Dzong Was Constructed By Zhabdrung Ngawang Namgyal in 1638
on the Exact Spot as Prophesized By the Guru Rinpoche Some 800 Years Ago. According to the Prophecy of Guru
rinpoche “a Person Named Namgyal Will Arrive At a Hill that Looks like An Elephant”. Another Legend Associated
with the Dzong is that of Zowe Palep, the Architect of the Dzong Received Vision of the Dzong in His Sleep. This
vision Got Imprinted in the Architects Mind and Enabled Him to Construct the Dzong Without Putting His Plans To
paper.
it is the Second Largest and the Second Oldest Dzong in Bhutan. the Dzong is Home to Some of the Most Sacred
relics of the Drukpa Kagyu School of Buddhism; It is also Home to the Sacred Mortal Remains of Zhabdrung
ngawang Namgyal and Terton Pema Lingpa the Great Treasure Discoverer of Bhutan. the Dzong Has also Served
as the Capital Bhutan Till 1955 Before the Capital Was Moved to Thimphu. the Dzong is Still the Winter Residence
of the Je Khenpo (chief Abbot) and the Central Monastic Body and Plays Host to the Annual Punakha Tshechu
festival Which is Very Popular with the Locals and Tourists Alike.
overnight At a Hotel in Punakha.
day: 4 Punakha to Paro - 145kms
post Breakfast Drive Towards Paro Via Dochula Pass.
on the Way Visit Tamchog Lhakhang: Tachog Lhakhang is Temple that is Dedicated to the 13th Century Saint
thangthong Gyalpo, the Iron Bridge Builder. this Temple is Located Across the River About 15kms from the Paro
towards Thimphu. in Order to Get to the Temple One Must Cross An Iron Chain Bridge, One of the Few Remaining Of
the Many that Thangthong Gyalpo Built. Crossing this Very Old Bridge with Its Swaying and Undulating Movements
can Be Quite An Experience.
ta Dzong (national Museum): the Name Ta Dzong Translates to ‘watch Tower’ and It Served the Function of Watch
tower for the Paro Rinpung Dzong. Back in the Day, Similar Look-out Points Were Built for other Dzongs
(fortresses) to Counter Any Approaching Hostilities, for Those Were the Days of Frequent Strife. These Towers
were Specifically Built High Atop Hills and other Vantage Points During the Old Days.presently Serving as The
national Museum (since Late 60’s), It Houses An Array of Antiquities such as Ancient Thangka (exquisite Scroll
painting), Mural Paintings and other Forms of Art Done By Great Personalities of Those Days, Original Textiles Of
the Kingdom Which Represent the Culture that Still Flourishes, Weapons & Armour Used Back in the Day,
household Objects Typical to the Bhutanese People’s Way of Life Back Then and Even Now, and other Natural And
historical Artifacts.
dumtse Lhakhang: It is a Private Temple Built By Lam Chazampa (thangthong Gyalpo) in the 13-14 Century. This
is a Special Temple with 3 Floors Representing Hell, Earth and Heaven. all the Paintings and Artifacts in The
temples are as Old as the Temple Itself. the Pillars Inside Were Installed By the Different Villages in Paro Valley,
almost in a Competition like Way, Even Today the Names Villages are Engraved in the Pillars. Though the Temple Is
situated Very Close to Town, the Lighting is Powered By Solar Power But is Not Lit Very Much as the Owners Fear
the Lights Will Fade the Colors in the Paintings, So It is Essential to Take a Torch.
drugyal Dzong Ruins: Literally Means 'bhutan's Victory Fortress', It Was Built to in 1654 By
shabdrung Ngawang Namgyal to Commemorate the Victory Over the Tibetan Invaders and It Would also Control
and Guard the Trade Between Bhutan and Tibet as It Stood Right On the Trade Trail. It Stands Atop a Small Hill With
a Commanding View of the Valley Up and Below and On a Clear One Can Get to See the Beautiful Mount Jomolhari
from Here. It Caught Fire in 1951 and Has Been in Ruins Since, Some Renovation Works have Been Carried Out But
has Not Been Able to Go Full Swing. Although in Ruins, the Dzong is Still Beautiful to Look At and One Can Just Walk
about Inside the Ruins Trying to Imagine How Things Were Before.
overnight At Hotel in Paro.
day: 5 Paro - Tiger’s Nest Hike----
have Early Breakfast and Drive Up to the Base of Taktsang Monastery (tiger’s Nest): the Most Famous And
sacred Site among all the Places in Bhutan. Guru Padmasambhava is Said to have Come Riding On a Flying
tigress to this Place and Meditated in a Cave for 3 Months, It Wasn’t Until Zhabdrung Ngawang Namgyal Came
to this Place and Meditated that It Gained the Popularity that It Has Now. the Present Structure is Said to Be Built
in the 15 Th Century But Was Destroyed By Fire in 1998 and Has Been Restored.
the Walk is About 2 Hours Till the Top Through Wide Pathways Which Was Built During the Restoration Works. One
hour Into the Climb There is a Tea Point from Where You Get a Very Good View of the Monastery, They also Serve
lunch Here. from There It’s About Another 45 Minutes Climb to the 2 Nd View Point and the Highest Point in The
hike.
after the Hike have Leisure Time in Paro Town. Just Walking Along Paro Town Itself is Exciting and Really Beautiful
feelings to Enjoy Chilled and Fresh Air of Paro Eveniong.
kyichu Lhakhang: Considered the Oldest Temple Along with Jampa and Kenchosum Lhakhang in Bumthang, It
dates Back to the 7th Century When a Tibetan King Ordered 108 Temples to Be Built in a Single Night to Subdue A
huge Ogress. It Was Later Renovated in the Mid 19th Century and in the Late 1960's By the Grand Queen
mother.it is also Considered By Many to Be One of the Holiest Places in the Country. Inside the Compound is An
orange Tree Which Always Has Oranges No Matter What the Season.
overnight At a Hotel in Paro.
day 06: Paro – Phuentsholing
(distance: 200 Kms. / Driving Time: 7 Hrs. / Altitude of Phuentsholing: 293 Mts.)
after Breakfast Check Out from Hotel and Transfer to Phuentsholing. On Arrival Check in At the Hotel.
overnight Stay At Phuentsholing.
day: 7 Phuentsholing to Bagdogra/kolkata

entry Permit for Bhutan:

indian Nationals Do Not Require Any Visa for Bhutan. a Permit Will Be Issued At the Entry Point On Production of A
passport (with a Minimum Validity of 6 Months from the Date of Departure) or Voter Id (only Valid Document For
issuing the Bhutan Entry Permit). the Traveler also Has to Carry Photocopy of the Travel Documents and 04
passport Size Photographs. for Children, Original Birth Certificate in English and Student Id is Required.
if You are Entering Bhutan Via Land, It is to Be Noted that the Permits are Issued Only During Working Days And
hours. (monday to Friday Between 9 am to 4 Pm During Winter and 5 Pm During Summer). It is Suggested that The
travelers Arriving in Phuentsholing On Friday Should Arrive Latest By 10 am in Order to Complete the Entry
formalities. No Permits are Issued On Saturday, Sunday and Bhutan Government Holidays. However, During High
season Depending Upon the Rush Immigration May Take Long Time to Issue the Permit. We Shall Not Be Responsible
for Any Delay During Processing of Permit By the Immigration Authority. Please Keep Your Client Informed They
may have to Stand On Long Queue During High Season to Obtain the Permit if Traveling Via Phuentsholing.
special Permit for Places other Than Phuentsholing, Thimphu and Paro:
special Permit is Required to Visit Places Beyond Thimphu and Paro From, the Department of Immigrations,
thimphu. No Charges Will Be Applicable for this Permit. Please Bring 02 Passport Size Photographs and Voter Id
card or Passport of Each Person Including Child. this Special Permit is Given Only After Guest Has Entered
bhutan. Permits are Not Issued On Saturday, Sunday & Bhutan Govt. Holidays.
railway Tickets, Local Transport.
 Personal Expenses such as Laundry, Telephone Calls, Tips & Gratuity, Mineral Water,
soft & Hard Drinks, Rafting, Rock Climbing, Paragliding, Porterage.
 Additional Sightseeing or Extra Usage of Vehicle, Horse Riding, Doli/baggi, Rope
way/electronics Lift, Khechara Gadi, River Boat/speed Boat, Gandola Ticket, Garden
entrance Ticket, Pony Fide, Shikara Fide Etc. Bother Than Mentioned in the Itinerary.
 Entrance Fees & Guide Charges.
 Any Cost Arising Due to Natural Calamities Like, Landslides, Road Blockage, Political
disturbances (strikes), Etc (to Be Borne By the Client, Which is Directly Payable On
the Spot).
 Any Increase in Taxes or Fuel Price, Leading to Increase in Cost On Surface
transportation & Land Arrangements, Which May Come Into Effect Prior To
departure. Photo Camera, Garden/any Entertainment Shoes Entry Fee.
 Any Condition No Refund. Your Booking Confirmation is 100% Not Refundable Basis.
 Room Heater Charges *service Tax. *insurance.
 Anything Which is Not Included in the Inclusion.
 Meals Outside of the Stated Meal Plan
 Early Check in & Late Check Out At the Hotels (check in & Check Out Time 14.00 To
12.00 Noon) Any other Services Not Specified Above.",
		      "name": "Bhutan Package",
		      "telephone": "+91-9422645201"
		    }
		    </script>
			";i:5;N;}